我正在寻找一种干净有效的方法来声明相同类型和相同值的多个变量。现在我有:

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

但我想要的是:

String one,two,three = ""

这在java中是可能的吗?牢记效率。


我认为这是不可能的,你必须单独设置所有的值(就像你提供的第一个例子一样)。

你给出的第二个例子,将只初始化最后一个变量为“”,而不是其他变量。


不,这在java中是不可能的。

你可以这样做。但是要尽量避免。

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

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();

或者最好使用数组或集合。


你可以声明多个变量,并初始化多个变量,但不能同时进行:

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

然而,这种事情(尤其是多重赋值)会被大多数Java开发人员所反对,他们认为这与“视觉上的简单”相反。


适用于原语类和不可变类,如字符串,包装类字符,字节。

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

对于可变类

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

创建三个引用+一个对象。所有引用都指向同一个对象,程序就会出错。


你可以这样做:

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

但是这些都指向同一个实例。它不会对最终变量或基本类型造成问题。这样,你可以在一行中完成所有的事情。


编辑:正如Zeeen指出的那样,这在Java中是行不通的。我想要回答的问题也是在Groovy中,这是错误提交的。


太晚了,但我找到的最简单的方法是:

String foo = bar = baz = "hello"
println(foo)
println(bar)
println(baz)

输出:

hello
hello
hello