2012-03-15 915 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数据不会立即消失。它是由垃圾收集器清除的。一个程序只能以低频运行,或者程序需要内存。在这种情况下,它会将内存标记为空闲,以便可以重用。