【发布时间】:2013-06-10 06:33:31
【问题描述】:
当字符串中包含感叹号时,我正在使用str.split("!") 将字符串拉成两半。通过代码设置的方式,如果没有感叹号,我将得到一个 1 索引数组,如果有,我将得到一个 2 索引数组。
代码:
String file, macroName;
String[] fileAndMacro = string.split("!");
if(fileAndMacro[0] != null)
file = new File(fileAndMacro[0]);
if(fileAndMacro[1] != null)
macroName = fileAndMacro[1];
如果我输入一个带有感叹号的字符串,它会起作用。例如"test!string" 将返回fileAndMacro[0] = "test" 和fileAndMacro[1] = "string"。
问题是当我没有感叹号时(你们中的一些人可能从我的代码中看出)。我只是得到一个ArrayIndexOutOfBoundsException。因此,显然空检查并不能解决问题。如果没有为要存储的值分配空间,考虑到内存中不能有空值,这是有道理的。
尽管我对此有所了解,但我不确定如何检查第二个索引是否存在。如何实时查看索引是否存在?
【问题讨论】:
-
您不需要检查数组元素是否为空:它们永远不会为空。
-
真的,所以像
array[0] = null这样的东西会抛出错误之类的吗? -
不,
String.split()不会发生类似的事情永远 ;) 如果数组为空,尝试访问它会抛出ArrayIndexOutOfBoundsException。 Java中的数组是在初始化时分配的,不可调整大小,零长度数组是可能的 -
啊,好吧,我明白你的意思了。