首页 / JAVA / 深入理解java自动拆箱装箱机制
深入理解java自动拆箱装箱机制
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了深入理解java自动拆箱装箱机制,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1523字,纯文字阅读大概需要3分钟。
内容图文
![深入理解java自动拆箱装箱机制](/upload/InfoBanner/zyjiaocheng/853/08260895c98c4df1a07af53296ae51c3.jpg)
什么是自动装箱?什么是自动拆箱?
所谓的装箱就是把基本数据类型转换成包装类,拆箱就是把包装类转换成基本数据类型
public static void main(String[] args) { //1 Integer a=new Integer(123); Integer b=new Integer(123); System.out.println(a==b);//输出 false //2 Integer c=123; Integer d=123; System.out.println(c==d);//输出 true //3 Integer e=129; Integer f=129; System.out.println(e==f);//输出 false //4 int g=59; Integer h=new Integer(59); System.out.println(g==h);//输出 true }
用以上代码来诠释自动拆装箱机制
a==b中==符号判断的是a和b在堆中所指向的对象是不是同一个
题目1:为false的原因是生成了两个不同的对象a,b存放于堆中,那么这个结果就一定是false。
题目2:因为123这个值介于-128到127之间,在java内存的常量池中会存放一个123的常量,然后c,d两个对象都指向常量池中的123,所以判断为true。
题目3:因为129这个值超出了-128到127这个范围了,所以引用就不向常量池中进行引用了,就会重新生成一个129的Integer对象,故而e,f两个是不同对象,所以是false。
题目4:g==h是比较g,h,g是基本数据类型,h是包装类,这个时候包装类就会自动调用intValue()方法转换为基本数据类型,从而和g就是相等的,所以为true。
Integer b=3
3是int类型,如果要把int类型赋值给Integer包装类,就需要自动装箱,相当于Integer b=Integer.ValueOf(3).
Integer b= new Integer(3);
int a=b;
b是包装类,a=b是把b赋值给a,那么b这个包装类需要自动拆箱,相当于int a = b.intValue();
注意:除double 和float 两种类型以外,其他基本类型入Integer值 在 -128 ~ 127之间时不会新建一个Integer 对象而是从缓存中获取。所以在做 == 判断时 要注意值的大小,如果超过范围,则两个值 即使一样但 == 比较的结果还是false。
内容总结
以上是互联网集市为您收集整理的深入理解java自动拆箱装箱机制全部内容,希望文章能够帮你解决深入理解java自动拆箱装箱机制所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。