web-dev-qa-db-fra.com

Initialisation de plusieurs variables avec la même valeur dans Java

Je cherche une méthode propre et efficace pour déclarer plusieurs variables du même type et de la même valeur. En ce moment j'ai:

String one = "", two = "", three = "" etc...

Mais je cherche quelque chose comme:

String one,two,three = ""

Est-ce quelque chose qu'il est possible de faire en Java? Garder l'efficacité à l'esprit.

189
user83643
String one, two, three;
one = two = three = "";

Cela devrait fonctionner avec des objets immuables. Cela n'a aucun sens pour les objets mutables par exemple:

Person firstPerson, secondPerson, thirdPerson;
firstPerson = secondPerson = thirdPerson = new Person();

Toutes les variables pointeraient vers la même instance. Ce dont vous auriez probablement besoin dans ce cas est:

Person firstPerson = new Person();
Person secondPerson = new Person();
Person thirdPerson = new Person();

Ou mieux encore, utilisez un tableau ou un Collection .

290
Alfredo Osorio

Vous pouvez déclarer plusieurs variables et en initialiser plusieurs, mais pas les deux en même temps:

 String one,two,three;
 one = two = three = "";

Cependant, ce genre de chose (en particulier les multiples affectations) serait mal vu par la plupart des Java développeurs, qui considéreraient cela comme le opposé de "visuellement simple".

52

Non, ce n'est pas possible en Java.

Vous pouvez faire de cette façon .. Mais essayez d'éviter le.

String one, two, three;
one = two = three = "";
18
sgokhales

Fonctionne pour les primitives et les classes immuables comme String, classes Wrapper Character, Byte.

int i=0,j=2   
String s1,s2  
s1 = s2 = "Java rocks"

Pour les classes mutables

Reference r1 = Reference r2 = Reference r3 = new Object();`  

Trois références + un objet sont créés. Toutes les références pointent sur le même objet et votre programme se comportera mal.

14
Srujan Kumar Gulla

Tu peux le faire:

String one, two, three = two = one = "";

Mais ceux-ci indiqueront tous la même instance. Cela ne causera pas de problèmes avec les variables finales ou les types primitifs. De cette façon, vous pouvez tout faire en une seule ligne.

11
HyperNeutrino

Je ne pense pas que ce soit possible, vous devez définir toutes les valeurs individuellement (comme dans le premier exemple que vous avez fourni).

Le deuxième exemple que vous avez donné n'initialisera que le dernier élément précieux "" et non les autres.

1
RMT