2011-06-01 110 views
153

我正在尋找一種乾淨而高效的方法來聲明具有相同類型和相同值的多個變量。現在,我有:將多個變量初始化爲Java中的相同值

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

但是我正在尋找類似:

String one,two,three = "" 

難道這東西是可以在java做?牢記效率。

編輯:幾位成員指出,這不是常態,會混淆大多數人。感謝您指出這一點。我想我會遠離這個實現,但我非常感謝下面的答案。

+3

_保持效率在哪裏? – khachik 2011-06-01 14:31:00

+9

代碼長度,輸入時間,視覺上簡單。那就是我的意思。我知道保留記憶是保留記憶,這個問題與事物的「人」一方有關。 – user83643 2011-06-01 14:33:06

+1

我想說,這通常是違反公認的Java約定,它會讓讀者感到驚訝,而且恕我直言難以閱讀,而不是單獨聲明它們。 – Simeon 2011-06-01 14:39:28

回答

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

或更好的使用數組或集合。

+6

有些情況下,這也適用於可變對象。例如,在最初的鏈表實現的構造函數中:head = tail = new Node(value)。所以頭部和尾部應該指向相同的參考。 – bcorso 2013-10-20 19:01:16

+0

這些是同一個對象嗎?如果我以後做'one =「貓」'two.equals(「貓」)'返回true? – Aequitas 2015-09-24 05:48:20

+0

唯一需要注意的是,這不適用於靜態變量。 – 2015-11-30 15:15:56

2

我不認爲這是可能的,你必須設置individualling的所有值(如你所提供的第一個例子。)

你給我的第二個例子,只會初始化最後varuable爲「」,而不是其他。

15

不,在java中不可能。

你可以這樣做..但是儘量避免它。

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

可以同時申報多個變量,並分配多個變量,但不能同時:

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

然而,這種事情(尤其是多重分配)會被大多數的Java開發人員皺起了眉頭,他會認爲與「視覺簡單」的相反。

+15

+1指出他正在嘗試*是不是*規範。 – 2011-06-01 14:37:53

+0

這是爲字符串,但如何爲整數? int日,月,年,小時,分鐘=日=月=年=小時= 0;這樣對嗎 ?? – Ranjit 2013-11-16 09:56:22

+0

@RanjitPati:它和Strings完全一樣。 – 2013-11-17 12:39:47

11

適用於原始類和不可變類,如String,包裝類Character,Byte。

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

對於可變類

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

三個引用+一個對象被創建。指向同一對象和程序的所有參考都將會行事不端。

+0

我不同意「指向同一對象的所有參考,並且您的程序將行爲不當。」唯一的問題是一個引用的對象發生了什麼事發生在另一個引用的對象 - 因爲它是同一個對象。這不是不當行爲;這是Java的工作原理。 – GKFX 2014-07-20 15:04:04

6

你可以這樣做:

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

但這些都指向同一個實例。它不會導致最終變量或原始類型的問題。這樣,你可以在一行中做所有事情。