integer i= new integer(10);
integer j=new integer(10);
System.out.print(i==j);
为什么是false?
因为此时的i和j是两个对象的引用,这样比较的是两个对象的引用,而不是具体的值。
JVM把内存分为不同模块。
integer i= new integer(10);
new Integer创建对象,存在堆内存里,存的也就是数值10。
而i是引用,存在栈内存里,存的是对象所在的堆内存的地址,也就是数值10在内存里的地址。
j也使用了new,所有创建了一个新对象,和i的对象地址就不一样。
而==比较的是栈内存里的值,所有结果是false。
int是直接将值存在栈内存里的,也就是将数值10直接存在栈内存里。所以int值用==比较的结果是true