If语句-出于安全性考虑的可变顺序

时间:2018-08-15 06:49:55

标签: java variables if-statement

假设我要检查列表中的第一个元素是否等于“ YES”或“ NO”。

false

换句话说:如果我已经进行了空检查,那么如果A等于B 如果B等于A 的顺序是否重要?

3 个答案:

答案 0 :(得分:5)

是的。这很重要。

您仅检查列表是否为非空。如果列表中的第一个元素为 null ,那么您将在

处获得NullPointerException
firstListValue.equalsIgnoreCase("YES")

但是,如果可以确保列表中的所有元素(或至少第一个元素)都不为空,则这两个语句都是等效的。

答案 1 :(得分:1)

为实现安全起见,您可以在以下情况下先使用它:

if ("YES".equalsIgnoreCase(firstListValue)) {
    return firstListValue; 
}

因为“是”是硬编码的字符串,不会为null。与第二种方法一样,只要list元素为null,您将得到NullPointerException

答案 2 :(得分:1)

如果列表为空,此检查还将抛出NullPointerException,因此您可以检查这两个条件

if(myList!=null && !myList.isEmpty())

并且还需要'null'检查通过'get()'检索到的所有值,因为如果列表为空或指定的索引超出范围'get()'方法将不会抛出'NullpointerException',它将仅返回空