web-dev-qa-db-fra.com

Initialisation du tableau de chaînes dans Java

Si je déclare un tableau String:

String names[] = new String[3];

Alors pourquoi ne pouvons-nous pas attribuer des valeurs au tableau déclaré ci-dessus comme ceci:

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

Vous pouvez effectuer les opérations suivantes pendant la déclaration:

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

Et si vous voulez le faire quelque part après la déclaration:

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

est un initialiseur et utilisé niquement lors de la construction ou de la création d'un objet nouvea tableau. Il ne peut pas être utilisé pour définir le tableau. Vous pouvez l'utiliser lorsqu'il est déclaré comme:

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

Vous pouvez également utiliser:

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

Tout d’abord, cela n’a rien à voir avec String, il s’agit des tableaux .. et cela aussi de l’initialisation déclarative des tableaux.

Comme discuté par tout le monde dans presque toutes les réponses, vous pouvez, tout en déclarant une variable, utiliser:

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

Toutefois, après la déclaration, si vous souhaitez affecter une instance de tableau:

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

Autant que je sache, la syntaxe de déclaration est simplement un sucre syntaxique ((== --- ==)) et cela n’est plus applicable lors de l’affectation de valeurs à des variables car lorsqu’elles sont affectées, vous devez créer une instance correctement.

Cependant, si vous nous demandez pourquoi il en est ainsi? Eh bien ... bonne chance pour obtenir une réponse à cette question. À moins que quelqu'un du comité Java ne réponde cela ou qu'il existe une documentation explicite citant ledit sucre syntaxique .

6
zEro

Tu veux dire comme:

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

Mais vous ne pouvez le faire que dans la même déclaration lorsque vous le déclarez

3
texasbruce

Ce n'est tout simplement pas une syntaxe valide de Java. Tu peux faire

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