-1

重複の可能性:
Java は「参照渡し」ですか?

以下のコードが をスローする代わりに 'test' を出力するのはなぜNullPointerExceptionですか?

public static void main(String[] args) {
    StringBuilder sb = new StringBuilder();
    sb.append("test");
    append(sb);
    System.out.println(sb.toString());
}

public static void append(StringBuilder sb) {
    sb = null;
}
4

3 に答える 3

5

sbメソッドのローカル変数append()null- に設定していますが、これは呼び出し元の環境変数には影響しません。同じままです。

于 2012-08-09T12:56:10.080 に答える
0

カスタム追加モデルが sb を親メソッドに返していないためです。したがってSystem.out.println(sb.toString());、現在のコンテキストで sb メソッドを返すだけです。

于 2012-08-09T12:57:59.643 に答える
0

メソッド パラメーターに値を割り当てると、そのメソッドのスコープ内でのみ新しい値が維持されるためです。つまり、メソッドSystem.out.println(sb)内にを配置すると、NPE がスローされます。append

于 2012-08-09T12:58:12.140 に答える