<pre name="code" class="java">class Test{
long width;
public Test(long l) {
width = l;
}
public static void main(String[] args) {
Test a, b, c;
a = new Test(42L);
b = new Test(42L);
c = b;
long s = 42L;
System.out.println(a==b);
System.out.println(a==c);
// System.out.println(a==s); 编译不通过
System.out.println(b==c);
System.out.println(a.equals(s));
}
}
输出为:
false
false
true
false
分析:
//声明了3个Square类型的变量a, b, c
//在stack中分配3个内存,名字为a, b, c
Square a, b, c;
//在heap中分配了一块新内存,里边包含自己的成员变量width值为48L,然后stack中的a指向这块内存
a =
new
Square(42L);
//在heap中分配了一块新内存,其中包含自己的成员变量width值为48L,然后stack中的b指向这块内存
b =
new
Square(42L);
//stack中的c也指向b所指向的内存
c = b;
//在stack中分配了一块内存,值为42
long
s = 42L;