01 class Account { Long acctNum, password;}
02 public class Banker {
03 public static void main(String[] args){
04 new Banker().go(); //created object
05 //Here there are 4 objects eligible to GC
06 }
07 void go(){
08 Account a1 = new Account(); //created object
09 a1.acctNum = new Long("1024"); //created object
10 Account a2 = a1;
11 Account a3 = a2;
12 a3.password = a1.acctNum.longValue();
13 a2.password = 4455L;
14 }
15 }
在第13行创建了一个long并且当autobox使包装器Long时,可能是第四个创建的对象?
以下行是否也在创建对象?
long l = 4455L;
long m = 4455;
long n = 4455l;
答案 0 :(得分:2)
Long l = 4455L;
自动装箱并创建对象(就像a2.password = 4455L;
一样)。 w ^
以下没有(因为类型是原始的,所以不需要自动装箱)
long l = 4455L;
答案 1 :(得分:1)
是的,你是对的,第13行确实通过自动装箱创建了一个新的Long。其他3行(l,m,n)不创建对象,因为它们是基元。
所以你的4个对象是Banker,Account和两个Longs。