博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 1.5 自动拆箱和装箱的注意事项
阅读量:4617 次
发布时间:2019-06-09

本文共 1261 字,大约阅读时间需要 4 分钟。

背景

java1.5后引入了自动装箱和自动拆箱的概念

自动拆箱:将引用类型转化为基本数据类型

自动装箱:将基本数据类型装为引用类型

但是实际使用中,什么情况自动拆箱什么情况自动装箱呢?

自动装箱

Integer i = 100;   (调用Integer.valueOf(100))  这里存在一个缓存变量  -128~127 ,如果基本数据类型在此范围内,则使用缓存的对象,否则new Integer(number) idea里面通过配置设置缓存最大值【-server  -XX:AutoBoxCacheMax=300】,如果配置的小于127,系统会使用127

自动拆箱

//第一种情况Integer i = 100; int x = i;   (调用 i.initValue(100))//第二种情况Integer  i = 100;int x = 100;System.out.println(i == 100)

自动填坑

---------1-----------    Integer a = 100;    Integer b = 100;a == b   //结果是true  ----------2----------  Integer a = 200;Integer b = 200;a == b   //结果是false    包装类型的比较,用equals()-----------3---------Integer a = 200;int b = 200;a == b   //结果是true  【自动拆箱】 initValue()-----------4---------Integer a = 200;int b = 200;a.equals(b)   //结果是true  值的比较------------5--------Long  a = 200;int b = 200;a.equals(b)   //结果是false   通过源码可以分析,如果类型不同一定为false ------------6--------
int a1 = Integer.MAX_VALUE +1;   //结果是 -2147483648  通过原反补进行计算可得 int  a2 = 222222222222222222222222;  //报错,与上面对比可得上面是先计算,在赋值 ------------7--------
Long a = 128L; Long b = 128L; System.out.println(a == b); //false  内置 [-128,127] 并且不能通过系统设置
---------其它缓存--------
Short s ;  [-128,127] Byte s1 ;   [-128,127] Character s5 ; [0,127]
 

 

转载于:https://www.cnblogs.com/shuaiandjun/p/10017512.html

你可能感兴趣的文章
常用模块,异常处理
查看>>
父窗口与子窗口之间的传值
查看>>
eclipse 找不到 tomcat 的解决方案
查看>>
HDU 1890--Robotic Sort(Splay Tree)
查看>>
connection string for Excel/Access 2010
查看>>
【转】【Python】Python中的__init__.py与模块导入(from import 找不到模块的问题)
查看>>
学习wavenet_vocoder之环境配置
查看>>
常用Maven命令
查看>>
Docker启动mysql的坑2
查看>>
j2ee爬坑行之二 servlet
查看>>
JAVA基础入门(JDK、eclipse下载安装)
查看>>
最基础的applet运用--在applet上画线
查看>>
并不对劲的hdu4777
查看>>
linux使用rz、sz快速上传、下载文件
查看>>
判断数字的正则表达式
查看>>
DOC常用命令(转)
查看>>
php写一个判断是否有cookie的脚本
查看>>
Mac配置Fiddler抓包工具
查看>>
转:Java并发集合
查看>>
Word截图PNG,并压缩图片大小
查看>>