0

文字列オブジェクトの配列は、次のように作成できます。

//受け入れ可能な宣言と初期化

line 1: String[]s = new String[2];
line 2: String[]s = new String[]{"a","b"};

//以下のinitも私には良さそうですが、コンパイラがエラーになります

line 3: String[] s = new String[2] { "a", "b" };

1) 3行目で配列のサイズを指定できないのはなぜですか?
2)3行目を使用して配列を作成する場合、文字列「a」と「b」はヒープまたは文字列プールに作成されますか?

4

2 に答える 2

6
  1. 配列を初期化することとそのサイズを指定することの両方を行うことはできません。これは冗長になるだけです。

  2. すべての文字列リテラルは定数プールに格納され、コードが実行される前のクラスの読み込み時に発生します。

new String[]また、イニシャライザーでは冗長であることに注意してください。

String[] s = {"a","b"};
于 2013-02-20T19:40:20.903 に答える
0

これは、あいまいさを防ぐために行われます。

[] 内の数と渡されたオブジェクトの実際の数が一致しない場合、システムはどうすればよいでしょうか?

したがって、配列のサイズは、初期化子に渡すオブジェクトの数によって定義されます。


2番目の質問は少し間違っています。Java オブジェクトは常にヒープ上に作成されます。

あなたの場合の String オブジェクトは String オブジェクトのプールから取得されます。これは、リテラルを使用し、コンパイラが実行時の値を簡単に認識できるためです。

于 2013-02-20T19:50:00.997 に答える