在需要的情况下,基本数据类型与包装类型可以通用。有些时候我们必须使用引用数据类型时,可以传入基本数据类型。比如:基本数据类型可以使用运算符直接进行计算,但是引用类型不可以。而基本类型包装类作为引用类型的一种却可以计算,原因在于,Java”偷偷地”自动地进行了对象向基本数据类型的转换。相对应的,引用数据类型变量的值必须是new出来的内存空间地址值,而我们可以将一个基本类型的值赋值给一个基本类型包装类的引用。原因同样在于Java又”偷偷地”自动地进行了基本数据类型向对象的转换。
自动装箱:基本数值转成对象
Integer i = 4; //相当于Integer i = Integer.valueOf(4);
自动拆箱:对象转成基本数值
i = i + 5; //等号右边相当于将i对象转成基本数值(自动拆箱) i.intValue() + 5; 加法运算完成后再次装箱,把基本数值转成对象。
注意自动装箱细节问题:
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i==j);// false 对象地址
System.out.println(i.equals(j));// true 继承 重写equals,比较的对象数据
System.out.println(\"===================\");
Integer a = 500;
Integer b = 500;
System.out.println(a==b);//false
System.out.println(a.equals(b));//true
System.out.println(\"===================\");
//在jdk1.5自动装箱时,如果数值在byte范围之内,JVM不会新创建对象空间而是使用原来已有的空间。
Integer aa = 127; // Integer aa = new Integer(127)
Integer bb = 127; // Integer bb = aa;
System.out.println(aa==bb); //true
System.out.println(aa.equals(bb));//true
valueOf(i)方法与new Integer(i)的不同:
方法一调用类方法返回一个表示 指定的 int 值的 Integer 实例。方法二产生一个新的Integer 对象。
继续阅读与本文标签相同的文章
该说再见了 谷歌搜索将停止索引Flash内容
-
源码分析 RocketMQ DLedger(多副本) 之日志追加流程
2026-05-18栏目: 教程
-
Java描述设计模式(07):适配器模式
2026-05-18栏目: 教程
-
前端进阶|第十天 数组分组编程,区间还是连续一网打尽
2026-05-18栏目: 教程
-
深入理解Java线程状态
2026-05-18栏目: 教程
-
从SpringBoot构建十万博文聊聊限流特技
2026-05-18栏目: 教程
