Inicjalizacja wielu zmiennych do tej samej wartości w Javie

Szukam czystej i efektywnej metody deklarowania wielu zmiennych tego samego typu i tej samej wartości. Teraz mam:

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

Ale szukam czegoś w stylu:

String one,two,three = ""

Czy jest to coś, co można zrobić w Javie? Mając na uwadze efektywność.

Author: Lonely Neuron, 2011-06-01

6 answers

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

Powinno to działać z obiektami niezmiennymi. To nie ma sensu dla mutowalnych obiektów, na przykład:

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

Wszystkie zmienne wskazywałyby na tę samą instancję. Prawdopodobnie to, czego potrzebujesz w takim przypadku, to:

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

Albo jeszcze lepiej użyć tablicy lub Collection.

 273
Author: Alfredo Osorio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-28 00:37:05

Możesz zadeklarować wiele zmiennych i zainicjalizować wiele zmiennych, ale nie obie w tym samym czasie:

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

Jednakże, tego typu rzeczy (zwłaszcza wielokrotne zadania) byłyby źle widziane przez większość programistów Javy, którzy uznaliby to zaprzeciwieństwo "Visual simple".

 42
Author: Michael Borgwardt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-16 13:37:25

Nie, to nie jest możliwe w Javie.

Możesz to zrobić w ten sposób .. Ale staraj się tego unikać.
String one, two, three;
one = two = three = "";
 16
Author: Javascript is GOD,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-01 14:39:37

Działa dla klas pierwotnych i niezmiennych, takich jak String, Wrapper classes Character, Byte.

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

Dla klas mutowalnych

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

Tworzone są trzy referencje + jeden obiekt. Wszystkie odniesienia wskazują na ten sam obiekt, a twój program będzie źle się zachowywał.

 10
Author: Srujan Kumar Gulla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-28 00:38:21

Możesz to zrobić:

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

Ale wszystkie one będą wskazywały na tę samą instancję. Nie spowoduje to problemów z końcowymi zmiennymi lub prymitywnymi typami. W ten sposób możesz zrobić wszystko w jednej linii.

 6
Author: HyperNeutrino,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-10 00:53:27

Wydaje mi się, że nie jest możliwe, aby trzeba było ustawiać wszystkie wartości (jak w pierwszym przykładzie, który podałeś.)

Drugi przykład, który podałeś, Zainicjalizuje tylko ostatni varuable na"", a nie Pozostałe.

 2
Author: RMT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-01 14:31:39