Initialisation de plusieurs variables à la même valeur en 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 qui est possible de faire en java? Garder l'efficacité à l'esprit.

168
demandé sur Lonely Neuron 2011-06-01 18:29:04

6 réponses

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. Probablement ce dont vous auriez besoin dans ce cas est:

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

Ou, mieux encore, utiliser un tableau ou un Collection.

273
répondu Alfredo Osorio 2018-04-28 00:37:05

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

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

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

42
répondu Michael Borgwardt 2018-06-16 13:37:25

Non, ce n'est pas possible en java.

Vous pouvez le faire de cette façon .. Mais Essayez de l'éviter .

String one, two, three;
one = two = three = "";
16
répondu Javascript is GOD 2011-06-01 14:39:37

Fonctionne pour les primitives et les classes immuables comme String, wrapper classes 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 vers le même objet et votre programme se comportera mal.

10
répondu Srujan Kumar Gulla 2018-04-28 00:38:21

Vous pouvez faire ceci:

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

Mais ceux - ci pointeront tous vers 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 ligne.

6
répondu HyperNeutrino 2015-08-10 00:53:27

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

Le deuxième exemple que vous avez donné, initialisera seulement le dernier varuable à "" et non les autres.

2
répondu RMT 2011-06-01 14:31:39