Инициализация нескольких переменных к одному значению в Java - PullRequest
188 голосов
/ 01 июня 2011

Я ищу чистый и эффективный способ объявления нескольких переменных одного типа и одного и того же значения. Прямо сейчас у меня есть:

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

Но я ищу что-то вроде:

String one,two,three = ""

Это то, что можно сделать в Java? Помня об эффективности.

Ответы [ 6 ]

289 голосов
/ 01 июня 2011
String one, two, three;
one = two = three = "";

Это должно работать с неизменяемыми объектами.Это не имеет никакого смысла для изменяемых объектов, например:

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

Все переменные будут указывать на один и тот же экземпляр.Вероятно, в этом случае вам потребуется:

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

Или еще лучше использовать массив или Collection.

52 голосов
/ 01 июня 2011

Вы можете объявить несколько переменных и инициализировать несколько переменных, но не обе одновременно:

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

Тем не менее, подобные вещи (особенно множественные назначения) будут осуждены большинством разработчиков Java, которые считают это противоположным «визуально простым».

18 голосов
/ 01 июня 2011

Нет, это невозможно в Java.

Вы можете сделать это ... Но старайтесь избегать этого.

String one, two, three;
one = two = three = "";
13 голосов
/ 21 августа 2012

Работает для примитивов и неизменных классов, таких как String, классы обертки Character, Byte.

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

Для изменчивых классов

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

Создано три ссылки + один объект. Все ссылки указывают на один и тот же объект, и ваша программа будет работать неправильно.

10 голосов
/ 10 августа 2015

Вы можете сделать это:

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

Но все они будут указывать на один и тот же экземпляр. Это не вызовет проблем с конечными переменными или примитивными типами. Таким образом, вы можете сделать все в одной строке.

1 голос
/ 01 июня 2011

Я не думаю, что это возможно, вы должны установить все индивидуальные значения (как в первом примере, который вы предоставили).

Второй приведенный вами пример будет инициализировать только последнюю переменную в "", а не остальные.

...