1

インスタンス変数を初期化しないとメモリが節約されますか?

たとえば、次の 2 つのクラスを比較します。

public class Class1 {
    private String s;
    // getter/setter for s
}

public class Class2 {
    private String s = "";
    // getter/setter for s
}

""他の場所の文字列定数が既にあると仮定すると、new Class1()より少ないメモリを消費しnew Class2()ますか?

4

3 に答える 3

2

いいえ、デフォルトでは、初期化されていない変数は null に設定されています。プリミティブ型のその他のデフォルトの初期化規則は次のとおりです。

  • boolean- は常に false に設定されます。
  • intfloatおよびdouble - はゼロに設定されます。
于 2012-12-27T01:23:39.410 に答える
1

JVM の実装に依存する可能性があります。2 つの主な違いは、生成されるコードです。Class2の値sを何かに明示的に設定するのはすべてのケースです。一方、予期しない動作につながる特定の何かにClass1設定されていない可能性があります。s

于 2012-12-27T01:02:45.050 に答える
0

null(デフォルト値)に初期化するかどうかに違いはありません。とにかく初期化されるため、メモリ使用量に違いはないと思います。

しかし、一般的に理解を深めるために (すべてのコード リーダーのデフォルト値を覚えておく必要はありません)、明示的に初期化することをお勧めします。

于 2012-12-27T04:03:57.083 に答える