黑马程序员技术交流社区
标题:
参数包装对象
[打印本页]
作者:
demown
时间:
2014-4-23 08:54
标题:
参数包装对象
Integer a1 = 100;
Integer a2 = 100;
System.out.println(a1 == a2); // true
Integer b1 = new Integer(100);
Integer b2 = new Integer(100);
System.out.println(b1 == b2); // false
Integer c1 = 150;
Integer c2 = 150;
System.out.println(c1 == c2); // false
为啥第一次打印的是true,但是后面两组打印的是 false 虽然有解答但是不明白
作者:
老貓钓鱼
时间:
2014-4-23 08:59
1和3的问题:-128~127,用的是同一个对象引用,具体请查询 享元模式 flyweight
关于第2个,new创建了新对象,不同的对象,引用地址肯定不一样
作者:
idream
时间:
2014-4-23 13:33
package cn.itheima.demo;
public class Demo {
public static void main(String[] args) {
/*
* b1和b2分别指向两个对象,而两个不同的对象在堆内存中开辟的空间也不一样,地址值也不一样
* 所以b1和b2是不相等的,是false
*/
Integer b1 = new Integer(100);
Integer b2 = new Integer(100);
System.out.println(b1 == b2); // false
/*
* 1.5以后,可以自动装箱,自动拆箱。这里是自动装箱,
* 1.5以后,自动装箱,如果装箱的是一个字节,那么该数据就会被共享,不会重新开辟空间
* 一个字节:-128 --> 127 所以第一组是true,第二组是false
*/
Integer a1 = 100; //数据被共享,在常量池中开辟空间
Integer a2 = 100;
System.out.println(a1 == a2); // true
Integer c1 = 150; //数据不被共享,数据在堆内存中开辟空间
Integer c2 = 150;
System.out.println(c1 == c2); // false
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2