2016-10-10 87 views
-4

假設我需要爲我的array1添加一個元素。我採取的方法是將array1複製到array2使用for loop,而不是刪除array1,並重新聲明array1,比以前的array1多一個元素。然後將array2複製到array1中,然後在array1中初始化新元素。但我猜測沒有辦法刪除array,所以如何在聲明後添加元素到array如何將一個元素添加到數組?

+2

您不能「刪除」變量(但它們可能超出範圍)。即使可以,你也不想改變變量的類型。你的問題是一個[XY問題](http://mywiki.wooledge.org/XyProblem),當你問最好的解決方案是使用完全不同的方法時,如何解決特定的代碼問題。更好的是,你告訴我們你正試圖解決的整體問題,而不是你目前如何解決問題。 –

+0

此外,您正在將變量與其保存的值或引用混淆。 –

+0

@HovercraftFullOfEels讓我重新說出我的問題.. – Eddie

回答

0

如果您有命名衝突,最好的解決方案是使用更具描述性的變量名稱。

在你的情況下,使用nameOfThing1nameOfThing2爲了區分它們。但在大多數情況下,當某個「名稱」是一個數字時,通常稱爲「id」。

根據情況,另一種策略是重構代碼,以使變量不在同一時間範圍內。您可以使用{ }聲明一個塊,以便爲每個變量創建一個單獨的作用域。

0

假設我有一個名爲NAME的int,並且我需要刪除它,以創建一個具有相同名稱的String。將NAME = null刪除int?

不會。它會給你一個編譯錯誤。

如果不行,那麼如何刪除一個變量?

你不行。變量不能被刪除。 (除此之外:如果可以更改變量名稱與其聲明類型之間的綁定,則Java的靜態類型將會中斷如果您(實際)刪除了原始變量,那麼這不會太糟糕,但它會無論如何...你不能)

一個解決方案是聲明一個不同的變量與不同的變量名稱。使用更好的變量名將有所幫助。

或者,您可以使用塊範圍來管理(本地)變量的範圍/生存期。例如:

public void doIt() { 
    int a = 1; 
    { 
     String a = "hey"; // compilation error 
     int b = 2; 
    } 
    String b = "bee";  // OK 
} 

請注意,您只能對局部變量執行此操作。


如果您擔心同時有多個變量的「效率開銷」,請不要。如果存在顯着的效率問題,JIT編譯器應該能夠處理它。 (如果不是現在,那麼在將來的Java發行版中。)