黑马程序员技术交流社区
标题:
int和Integer(自动装箱和自动拆箱)希望可以帮助刚学习的朋友.
[打印本页]
作者:
刘进朝
时间:
2012-9-25 15:23
标题:
int和Integer(自动装箱和自动拆箱)希望可以帮助刚学习的朋友.
int和Integer(自动装箱和自动拆箱)
public class Test1 {
public static void main(String[] args) {
Integer i1 = 256;
Integer i2 = 256;
if (i1.equals(i2) )
System.out.println("相等");
else
System.out.println("不相等");
}
} 显然是结果是相等的 。equal比较的是两个对象的内容是否相等。 上面是JDK1.5的新特性,叫自动装包和拆包。
所以上面自动封装成Integer对象。 它们两个对象的内容相同 所以显示相等
public class Test1 {
public static void main(String[] args) {
Integer i1 = 256;
Integer i2 = 256;
if (i1==i2)
System.out.println("相等");
else
System.out.println("不相等");
}
} 结果是不相等的。
==比较的是内存地址。i1,i2自动装包成Integer类,由于它们的内存地址是不同的,所以显示不相等。
public class Test1 {
public static void main(String[] args) {
Integer i1 = 127;
Integer i2 = 127;
if (i1.equals(i2) )
System.out.println("相等");
else
System.out.println("不相等");
}
} 结果是相等的。显然比较的内容相等。
public class Test1 {
public static void main(String[] args) {
Integer i1 = 127;
Integer i2 = 127;
if (i1==i2)
System.out.println("相等");
else
System.out.println("不相等");
}
}结果是相等的。由于自动装包,它们其实都是装在一个Integer对象中。
这里就有特殊性质了。ava编译器在1.5版本中,对原型的自动装包是有一个规定的,对于boolean,byte相同的值放在同一个包装器对象中,
char<=127的放在同一个包装对象中,short和int在-128到127之间的数据放在同一个包装对象中。
也是对这两个很有感触啊.
作者:
戎石锁
时间:
2012-9-25 18:49
楼主总结的很好
我觉得这个可以加分
但是为什么没加,就不知道了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2