2012-03-15 97 views
0

我有字符串數組str[10][3],它充滿了值。 現在我想讓它變爲空即。刪除str的所有值。 我已經將str定義爲static,我也想從同一個包中的另一個claas中清空此字符串。 我可以在這裏使用null在java中刪除二維數組中的所有數據

Plz建議某種方式。謝謝

+2

您是否嘗試*刪除對數組的引用('str = null'),或者遍歷每個元素並將其設置爲'null'? – Makoto 2012-03-15 04:48:53

+0

爲什麼你想刪除所有的字符串?你會再次使用它們嗎?對於你的問題可能有更好的解決方案,而不是全部設置爲''''或'null'(你可以這樣做)。 – Deco 2012-03-15 04:50:37

+0

@Makoto和Deco我重複使用前檢查了空字符串,因此強制它們爲空。 – 2012-03-15 05:02:11

回答

3

當然,您可以使用null,但首先想知道是否真的需要使它們無效,因爲空值大多會產生問題並需要特殊處理。您可以使用空字符串""以避免出現NullPointerExceptions問題。

只是重新分配一個新的陣列同一個變量會做的伎倆,Java將照顧有關收集garbaged數據:

ClassName.str = new String[10][3]; 
+0

我想他想要的字符串標記爲垃圾回收 – Adrian 2012-03-15 04:55:18

+0

@adrian我不想要字符串標記爲垃圾回收,我只是想重新啓用它們,並在重用它們之前我必須確認該字符串是空的。 – 2012-03-15 05:06:02

+0

@jack ...嘿謝謝很多..它的作品... !!! :) – 2012-03-15 05:09:06

0

str = new String[10][3];將分配一個空的2D陣列到str

0

總是可以設置一個值,只要爲null,因爲它是沒有基本類型(int,char,boolean,...)或只讀值。我認爲它們都不是,所以答案是肯定的。

因此,一個解決辦法是:

str = null; 

如果你要填寫你的結構有新的價值觀,你可以使用

str = new String[10][3]; 

,但是我不明白爲什麼你應該做的,這不是因爲你不需要你應該擺脫它的數據。此外,在新的str中也有數據(最初的null-字符串)。但是如果你不想將新數據存儲到結構中,那麼這樣做沒有問題。這種範例有時被稱爲「懶惰」。這意味着:「除非你絕對不得不去做任何事情」

通過設置null數據不會立即消失。它是由垃圾收集器清除的。一個程序只能以低頻運行,或者程序需要內存。在這種情況下,它會將內存標記爲空閒,以便可以重用。