【Java】对于空值null的判断

时间:2023-01-03 19:57:58

在大型程序开放过程中,无论是SSH还是安卓,都需要对空值进行判断,尤其是某个实体传递过来的值,但是,往往对于null的判断条件没写好,导致空指针异常。

对于任意的Object,判断其是否为null,应该将Object xx==null写在所有判断条件的前头,一个为null的东西,调用其自身的任何方法都会出现著名的java.lang.NullPointerException空指针异常,包括Object.equals(null)都是会导致空指针异常的。其实一个为null的东西,它只能执行Object xx==null,其余任何的方法调用都是会出空指针异常的。

不过,要注意一点,对于String xx="",xx就不为null了,虽然其值为空,但是xx此时是经过实体化的对象,其可以调用isEmpty()方法来判断其是否是"",与String xx=null有根本区别,String xx=null与Object xx=null一样,都是只能执行Object xx==null,其余任何的方法调用都是会出空指针异常的。

用一个程序来说明这个问题,代码如下:

public class javaNullPointTest {

public static void ObjectIsNull(Object object) {
// Object的判空
// 正确的判空
try {
if (object == null) {
System.out.println("空指针异常没有发生,为null");
}
} catch (NullPointerException e) {
System.out.println("object == null不会导致空指针异常发生");
}
// 错误的判空
try {
if (object.equals(null)) {
System.out.println("空指针异常没有发生,为null");
}
} catch (NullPointerException e) {
System.out.println("object.equals(null)导致空指针异常发生");
}
}

public static void StringIsNull(String string) {
// String的判空
try {
if (string == null) {
System.out.println("空指针异常没有发生,为null");
} else if (string.isEmpty()) {
System.out.println("空指针异常没有发生,值为空“”");
}
} catch (NullPointerException e) {
System.out.println("string==null不会空指针异常发生");
}
// 错误的判空
try {
if (string.equals(null)) {
System.out.println("空指针异常没有发生,为null");
}
} catch (NullPointerException e) {
System.out.println("string.equals(null)导致空指针异常发生");
}
}

public static void main(String[] args) {
Object nullObject = null;
String nullString1 = "";
String nullString2 = null;
System.out.println("对于nullObject:");
ObjectIsNull(nullObject);
System.out.println("对于nullString1:");
StringIsNull(nullString1);
System.out.println("对于nullString2:");
StringIsNull(nullString2);
}
}

运行结果如下:

【Java】对于空值null的判断