0

gcルートとは何かについて多くの説明があります.ローカル変数とparamsがgcルートであることは知っています.しかし、メンバー変数はgcルートではありませんか? クラス本体にコードを入力すると

    Person p = new Person("Lily");
    public void sayHello(){
        System.out.println(p.name);
    }

したがって、p はローカル var ではなくメンバー var です。p が GC ルートでない場合は、コレクションである可能性があります。また、sayHello メソッドで null ポイント例外が発生します。

4

1 に答える 1

0

人物 p がルート オブジェクトになります。次のような階層になります。

person
  |
name

また、 p を初期化してから name にアクセスしようとしているため、null ポインター例外が発生することはありません。

Nullpointer は、 p を null として定義した場合にのみヒットしますPerson p = null

そして今、あなたはその上の名前にアクセスしようとしますSystem.out.println(p.name);

于 2015-03-29T07:54:27.463 に答える