【Java】对于空值null的判断

时间:2020-12-01 19:58:19

在大型程序开放过程中,无论是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的判断