包装类:基本数据类型对应的引用数据类型
基本数据类型 byte short int long float double char boolean
引用数据类型 Byte Short Integer Long Float Double Character Boolean
(装箱: 将基本数据类型封装成引用数据类型)标准形式
int i=10;
Intger in=new Integer(i);
jdk 1.5加入的新特性 (自动装箱)
Integer in=10;
自动拆箱: 就是将引用数据类型转换成基本数据类型
Integer in=new Integer(10);
if(in>11){
} / /这里的in自动拆箱为int型进行比较
自动装箱底层调用的是ValueOf方法,自动拆箱底层调用的是xxxValue() 对应的方法,如:intValue()
Integet i1=98;
Integer i2=98;
System.out.println(i1==i2);
答案为true
Integer i1=160;
Integer i2=160;
System.out.println(i1==i2);
答案为false
原因:
Integer如果在-128到127之间,那么返回的是同一个对象,所以地址相同
其余的还有:
Byte如果在它自己的范围内,只要值相同,返回的就是同一个对象
Short如果在-128到127之间,那么返回的是同一个对象,超出范围每次new新的对象
Long如果在-128到127之间,那么返回的是同一个对象,超出范围每次new新的对象
Float、Double是永远new一个新的对象
Character是在0-127返回一个固定对象,超出范围new新的对象
Boolean如果是true,返回同一个对象TRUE(常量),如果值是false,返回同一个对象FALSE(常量),那么返回的是同一个对象,所以地址相同
Byte如果在它自己的范围内,只要值相同,返回的就是同一个对象
Short如果在-128到127之间,那么返回的是同一个对象,超出范围每次new新的对象
Long如果在-128到127之间,那么返回的是同一个对象,超出范围每次new新的对象
Float、Double是永远new一个新的对象
Char是在0-127返回一个固定对象,超出范围new新的对象
Boolean如果是true,返回同一个对象TRUE(常量),如果值是false,返回同一个对象FALSE(常量),那么返回的是同一个对象,所以地址相同
本文介绍了Java中的自动装箱和拆箱机制,详细解释了如何将基本数据类型转换为引用数据类型,以及反之的过程。通过示例展示了在不同数值范围内,Integer对象的内存共享情况,说明了在特定范围内Integer对象会重复使用,而超出范围则会每次都创建新的对象。此外,还提到了其他数据类型如Byte、Short、Long、Float、Double、Character和Boolean的内存管理特点。
287

被折叠的 条评论
为什么被折叠?



