我想知道这段代码是否有效用于检查数组是否为空,或者我应该检查是否为null?
if(arrayName={})
System.out.println("array empty");
else System.out.println("array not empty");
谢谢!
答案 0 :(得分:6)
在数组类中,我们有一个定义为“length”的静态变量,它保存数组对象中的元素数。您可以使用它来查找长度:
if(arrayName.length == 0)
System.out.println("array empty");
else
System.out.println("array not empty");
答案 1 :(得分:5)
我会考虑通过从这里添加Apache Commons Lang来使用ArrayUtils.is为空http://commons.apache.org/proper/commons-lang/download_lang.cgi
最大的好处是,它将以干净且易于阅读的方式为您检查数组。
然后你可以这样做:
if (ArrayUtils.isEmpty(arrayName) {
System.out.printLn("Array empty");
} else {
System.out.printLn("Array not empty");
}
答案 2 :(得分:0)
不,因为数组文字不能那样工作。将arrayName={}
替换为arrayName.length==0
,它应该有效。
答案 3 :(得分:0)
要检查空的尝试,请执行以下操作:
if (arr.length == 0) {
System.out.println("array is empty");
}
答案 4 :(得分:0)
如其他答案所示,length
的{{1}}属性将给出数组的长度。但是,在对数组执行任何操作之前,始终建议检查数组是否为Array
,否则如果数组为null
则会抛出NullPointerException
。
null
答案 5 :(得分:0)
proudandhonour的回答是在正确的轨道上,但不适用于if (req.session.auth !== 'admin') { //
res.redirect('/');
}
的所有可能值,特别是arrayName
尚未定义且arrayName
的情况。在这种情况下,代码:
null
将失败并且if(arrayName.length == 0)
System.out.println("array empty");
else
System.out.println("array not empty");
TimeTravel的答案正确测试此案例并正确处理NullPointerException.
的所有可能值。唯一的缺点是他的代码比它需要的更冗长。
Java提供布尔表达式的短路评估。具体而言,arrayName
的结果为(false && xx)
false
的所有可能值。因此,在计算布尔xx
运算符的第一个操作数时,如果第一个操作数的计算结果为false,则JVM将忽略第二个操作数。
利用这个,我们可以写:
&&
还有三元运算符,它提供了一种内联if-then-else表达式的机制。在某些情况下,这可以提高可读性:
if (arrayName != null && arrayName.length > 0)
{ System.out.println("The array length > 0"); }
else
{ System.out.println("The array is null or empty"); }