Integer类型数据何时==?

Integer i1= new Integer(1);

Integer i2= new Integer(1);

Integer i3=i1+i2;

Integer i4=2;

System.out.println(i1==i2);//false

System.out.println(i3==i4);//true


为什么i1==i2是false,但是i3==i4是true呢?

shenzhi
浏览 1055回答 1
1回答

慕粉3233872

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。new Integer(1) 和Integer a = 1不同,前者会创建新的对象,存储在堆中,而后者如果在-128到127的范围内,不会创建新的对象,而是从IntegerCache中获取。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java