web-dev-qa-db-ja.com

Javaでの文字列配列の初期化

String配列を宣言すると、

String names[] = new String[3];

それでは、なぜこのように上記で宣言した配列に値を代入できないのでしょうか。

names = {"Ankit","Bohra","Xyz"};
82
Ankit Bohra

宣言中に次のことができます。

String names[] = {"Ankit","Bohra","Xyz"};

そして宣言の後のどこかでこれをしたいのなら:

String names[];
names = new String[] {"Ankit","Bohra","Xyz"};
149
Rohit Jain
names[] = {"Ankit","Bohra","Xyz"};

初期化子であり、new配列オブジェクトを作成または作成するときにonlyを使用します。set配列には使用できません。次のように宣言されているときに使用できます。

String[] names= {"Ankit","Bohra","Xyz"};

また使用することができます:

names=new String[] {"Ankit","Bohra","Xyz"};
13
Andrey Akhmetov

まず最初に、これはStringとは何の関係もありません。それは配列についてであり、それは配列の宣言的初期化についてもそうです。

ここでほとんどすべての答えでみんなによって議論されるように、あなたは、変数を宣言している間、使用することができます:

String names[] = {"x","y","z"};

ただし、Arrayのインスタンスを割り当てる場合は、宣言を投稿してください。

names = new String[] {"a","b","c"};

私の知る限り、宣言構文は単なる構文糖そして変数に値を代入するときはもう適用できません。値を代入するときはインスタンスを適切に作成する必要があるからです。

しかし、あなたが私たちに尋ねるなら、それがなぜそうなのでしょうか?そうですね、それに対する答えをもらえれば幸運です。 Java委員会の誰かがそれに答えない限り、または上記構文糖を引用している明示的な文書がない限り。

6
zEro

あなたは好きです:

String names[] = {"Ankit","Bohra","Xyz"};

あなたがそれを宣言するときしかし、あなたは同じステートメントでこれを行うことができます

3
texasbruce

これは有効なJava構文ではありません。できるよ

names = new String[] {"Ankit","Bohra","Xyz"};
2
fastcodejava