2015-09-26 30 views
2

所以我只是有一個朋友關於有效實例化和Java中聲明變量參數;那個論點以僵局結束,因爲我們都不能提出不能平等對抗的觀點,所有這些觀點都可以歸結爲一個意見。不過,我的問題是:類型實例化和聲明在同一行

如果我宣佈說,在同一行3個變量:Object x,y,z;,它是一樣的宣佈他們在三個不同的線路:Object x;Object y;Object z;。但是,將它們全部在一行上進行報告會更有效率嗎?

如果我在同一行聲明3個變量,同時實例化所有這些,都是他們都綁定到同一個對象/價值?:Object x,y,z = new Object();或者是X等於Object類型的新實例以及yz等於到Object的新實例?

如果我在同一行聲明3個變量和實例他們都單獨而不是在3個獨立的行這樣做,是不是更有效,或者只是一個意見?:

Object x = new Object(),y = new Object(),z = new Object(); 

回答

2

然而,是不是更有效地聲明它們都在同一行?

沒有什麼變化,都是相同的,除了可讀性計數。

如果我在同一行聲明3個變量和所有 同時實例化它們,是它們都綁定到同一對象/價值?:

沒有隻z將被初始化。如果它們是類級變量,則x和y將爲null

如果我在同一行聲明3個變量和實例他們都 單獨,而不是3個獨立的行這樣做,是不是更 有效的,或只是一個意見?:

的事不,它與分別實例化它們沒有區別。

但是,帶來的主題,以不同的方向,這種聲明的主要點是基於可讀性公約上所有其他的程序員應該同意。

首先閱讀,

Object o1,o2,o3 = new Object(),o4,o5,o6,o8; 

現在這個,

Object o1; 
Object o2; 
Object o3 = new Object(); 
Object o4; 
Object o5; 
Object o6; 
Object o8; 

在這種情況下,你第一次意識到,o7缺失和o3被初始化。對於某些人來說可能是兩種情況,但認爲這個聲明是大型項目的一部分,並且你在很多地方都有這種聲明。現在,這兩個聲明都可以有所作爲。

+1

因此,這只是歸結爲意見和可讀性問題。 – Matthewacon

1
  1. 的事聲明Object x, y, zObject x; Object y; Object z;從效率的角度來看是完全一樣的。即使在Java字節碼中,這兩種情況也沒有區分。

  2. 當您聲明Object x,y,z = new Object();時,您只分配z變量。 xy仍未初始化。

  3. 在同一行聲明多個變量是絕對相同聲明他們在從視效率點單獨的行。即使在Java字節碼中,這兩種情況也沒有區分。