- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了
字节与位的关系
在计算机的物理存储中,一条电路线被称之为1位,二进制识别中为0(低电平)或1(高电平),英文中用bit表示,而8个bit组成一个字节,英文为Byte
布尔类型的说明
对于boolean,官方文档未明确定义,它依赖于JVM厂商的具体实现。逻辑上理解是占用1位,但是实际中会考虑计算机高效存储因素。
基本数据类型之间的转换规则
基本数据类型之间也存在着转换关系,往往发生在表达式计算的过程中,而这种转换根据不同场景分为:自动类型转换强制类型转换
自动类型转换:Java编译器无需显示处理,一般由等级低的数据类型向等级高的数据类型转换,如int-long。很明显,int所能存储的数据必定是long的子集,不存在数据丢失问题。
等级由低到高
byte-short-int-long-float-double
char-int-long-float-double
inta=3;
doubleb=1.5;
//自动类型转换:a被转换为double类型
doubleresult=a*b;
System.out.println(结果:+result);//输出:结果:4.5
强制类型转换:由高等级数据转为低等级数据时往往存在强制类型转换,这时候Java编译器认为存在隐患,需要程序员介入,显示的处理强转,潜在风险是数据丢失或精度丢失。
由左到右需要强转
double-float-long-int-char-short-byte
doublec=10.1;
//强制类型转换:将double类型转换为int类型,精度丢失
intd=(int)c;
System.out.println(整数值:+d);//输出:整数值:10
转换规则如下
=右边先自动转换成表达式中最高级的数据类型,再进行运算。整型经过运算会自动转化最低int级别,如两个char类型的相加,得到的是一个int类型的数值。
=左边数据类型级别大于右边数据类型级别,右边会自动升级
=左边数据类型级别小于右边数据类型级别,需要强制转换右边数据类型
char与short,char与byte之间需要强转,因为char是无符号类型
这八种基本类型都有对应的包装类分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean。
因为Java中一切皆对象,基本数据类型无法满足这个大口号,比如泛型、序列化、类型转换、高频数据区间的缓存等,故为了弥补,便诞生了8种基本数据类型对应的包装类型。
包装类型与基本数据类型差异
使用场景:在Java中除了一些常量和局部变量的定义会用到基础数据类型外,绝大部分情况下均采用包装类型,如方法参数,对象属性等,且基本数据类型不能用于泛型,包装类型可以!
默认值:包装类型比基本类型多了一个非功能值:null,在不做任何赋值的情况下,包装类型的默认就是null,而基本数据类型都有相应的默认值,见上面表格。
所占内存因为包装类型是对象,会有一些对象头等信息,所以占用空间上要大于基本数据类型。
比较方式基本类型采用==号比较,比较的是值,而对于包装类型来说,==比较的其实是对象的内存地址,对象值的比较需要通过equals()方法完成。
[注意]:很多同学都以为基本数据类型存在栈中,包装类型作为对象存储在堆中,这个观点是有失偏颇的,如果基础数据类型的成员变量在没有被static关键字修饰的情况下,是存在的堆中的,只有局部变量被存在栈的局部变量表中!而全部对象都存在堆中,也是个不完整的答案,这里涉及到HotSpot中的逃逸分析,等讲到JVM时再展开说吧。
自动装箱与拆箱
在Java中不仅仅基本类型之间存在着转换,基本数据类型与包装类型之间同样存在着转换,在JDK1.5之前是不支持自动装箱与拆箱的,所以那时候需要通过显示的方法调用来实现转换,而JDK1.5开始,自动化程度提升了。
装箱:基本类型转变为包装器类型的过程。
拆箱:包装器类型转变为基本类型的过程。
//JDK1.5之前是不支持自动装箱和自动拆箱的,定义Integer对象,必须
Integeri=newInteger(8);
//JDK1.5开始,提供了自动装箱的功能,定义Integer对象可以这样
Integeri=8;
intn=i;
您可能关注的文档
最近下载
- 闽南地区传统村落活化与保护基于旅游凝视理论.docx VIP
- 五年级下 花城版 音乐 第10课 民族管弦乐《翻身的日子》课件.pptx
- 北京大学2021强基校测如何备考?附2020笔面试真题.pdf VIP
- 2024年防爆电气试题库附答案.docx
- 口吃者的自我治疗第10修订版(经典)malcolmfraser.pptx VIP
- 中医简历:求职信-中医专业毕业生求职信供参考.docx VIP
- 知到智慧树网课大学语文人文思考与写作实践答案.docx
- 人教鄂教版六年级下册科学全册知识点汇总 .pdf VIP
- 马克思主义与社会科学方法论标准化期末考试试卷-课后习题答案.pdf VIP
- 个人专业发展研修总结 个人研修计划具体目标和要求(五篇).pdf VIP
文档评论(0)