本帖最后由 全海波 于 2012-9-8 09:18 编辑
class IntegerDemo
{
public static void main(String[] args)
{
//在堆内存中开辟了两个空间来存放"123",栈内存中的x,y分别指向各自不同的对象,地址不一样,所以结果就为false
Integer x = new Integer("123");
Integer y = new Integer("123");
System.out.println("x == y : " + (x==y));//false
//因为m与n指向了同一个Inger对象,因为当数值在byte范围内,
//对于1.5版本的新特性来说,如果该数值已经存在,那么就不会在开辟新的空间
//也就是说,在内存中有这个“123”这个数值了,当你再声明一个n类类型变量的时候
//它将不再开辟空间,而是与m直接指向了Integer对象
Integer m = 123;
Integer n = 123;
System.out.println("m == n : " + (m == n));//true
}
}
m,n图解:
x,y图解:
|