根据下面的程序代码,哪些选项的值返回true?
public class Square { long width; public Square(long l) { width = l; } public static void main(String arg[]) { Square a, b, c; a = new Square(42L); b = new Square(42L); c = b; long s = 42L; } }
这题考的是引用和内存。 //声明了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;
public boolean equals(Object obj) { return (this == obj); }其实就是判断两个引用是否相等,故D也错误。
1 2 3 4 5 6 7 8 9 10 11 12 | 这题考的是引用和内存。 //声明了3个Square类型的变量a, b, c //在stack中分配3个内存,名字为a, b, c Square a, b, c; //在heap中分配了一块新内存,里边包含自己的成员变量width值为48L,然后stack中的a指向这块内存 a = newSquare(42L); //在heap中分配了一块新内存,其中包含自己的成员变量width值为48L,然后stack中的b指向这块内存 b = newSquare(42L); //stack中的c也指向b所指向的内存 c = b; //在stack中分配了一块内存,值为42 longs = 42L; |
1 2 3 | publicbooleanequals(Object obj) { return(this== obj); } |