代码片段1
Java代码
public static void main(final String[] args) {
Integer a = new Integer(100);
Integer b = 100;
System.out.println(a == b);
代码片段2
Java代码
public static void main(final String[] args) {
Integer a = 100;
Integer b = 100;
System.out.println(a == b);
代码片段3
Java代码
public static void main(final String[] args) {
Integer a = 156;
Integer b = 156;
System.out.println(a == b);
}
代码片段4
Java代码
public static void main(final String[] args) {
Integer a = Integer.valueOf(100);
Integer b = 100;
System.out.println(a == b);
}
结果为啥是下面这样的?2、3、4的对错为啥?
代码片段1 是false
代码片段2是true。
代码片段3 是false
代码片段4 为true
陈贺 发表于 2013-7-22 14:07
==符号,他比较的是一个对象在内存中的地址值, 1,3,4,都创建了对象内存地址都不同
...
liuzhming 发表于 2013-7-22 13:59
对于基本数据类型int,要装箱成integer对象时,如果这个数字在一个字节之内,即-128到127,就会缓存起来, ...
陈贺 发表于 2013-7-22 14:08
说错了是第一题和第3题
yinjiek 发表于 2013-7-22 14:16
Integer a = 100;
Integer a = 156;因为Integer对象的取值范围为-128到127,所以156放不进去;
Integer a = ...
tanzhiqiu 发表于 2013-7-23 05:47
代码片段1 integer b=100,相当于integer b=new integer(100);两个内存地址不同。
代码片段2
Integer ab ...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |