equals()方法在String内容比较中被频繁使用,这里有一个小技巧能够有效防止NullPointerException,那就是比较一个引用变量和一个字符串常量的时候将字符串常量写在前面,如下面程序代码中before方法中的那样。
public class Main {
private static String str = null;
public static void main(String[] args) {
before(str);
after(str);
}
public static void before(String str) {
if ("a".equals(str)) {
System.out.println("a");
} else {
System.out.println("b");
}
}
public static void after(String str) {
if (str.equals("a")) {
System.out.println("a");
} else {
System.out.println("b");
}
}
}
运行程序,after方法回发生NullPointerException而before方法不会。
是的,我们应该检查 str 不让它是null,但是,能多一层保险不是更好吗,反正将字符串常量写在前面也不会影响其他的什么。