1
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にすると、4番目のオブジェクトが作成される可能性がありますか?

次の行もオブジェクトを作成していますか?

long l = 4455L;
long m = 4455;
long n = 4455l;
4

2 に答える 2

2
Long l = 4455L;

それはオートボックス化してオブジェクトを作成します(ちょうどa2.password = 4455L;そうです)。W

以下はそうではありません(型がプリミティブであるため、自動ボックス化する必要はありません)

long l = 4455L;
于 2012-10-23T13:09:33.057 に答える
1

はい、その通りです。13 行目は、オートボクシングによって新しい Long を作成します。他の 3 行 (l、m、n) はプリミティブであるため、オブジェクトを作成しません。

したがって、4 つのオブジェクトは Banker、Account、および 2 つの Long です。

于 2012-10-23T13:11:26.927 に答える