【Java】对于空值null的判断

在大型程序开放过程中,无论是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);
	}
}

运行结果如下:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-06 04:37:22

【Java】对于空值null的判断的相关文章

Java中空值的判断

空值判断的测试代码如下: String str = new String();// System.out.println("1=" + (str == null)); System.out.println("2=" + str.isEmpty()); System.out.println("3=" + str.equals("")); str = "";//空字符串 System.out.println(&

java基础-" "与null的区别

java中" "与null区别; 转载:http://www.cnblogs.com/x_wukong/p/3619221.html (1)问题一:null和""的区别String s=null;string.trim()就会抛出为空的exception String s=""; string.trim()就不会抛, 为什么? 答:NULL:代表声明了一个空对象,不是一个字符串,可以赋给任何对象.  ""     :代表声明了

freemarker中空值 null的处理 ?exists ?if_exists ?default(“”)

exists用在逻辑判断,而if_exists用来打印东西 eg 1:<#if listBlogPost?exists && listBlogPost.size != 0 >    判断list 是否为空 eg 2:${s?if_exists}   判断 s 是否为空,不为空就打印 freemarker中空值 null的处理 ?exists ?if_exists ?default(“”) freemarker中空值 null的处理 ?exists ?if_exists ?def

SQL学习之空值(Null)检索

在创建表表,我们可以指定其中的列包不包含值,在一列不包含值时,我们可以称其包含空值null. 确定值是否为null,不能简单的检查是否=null.select语句有一个特殊的where子句,可用来检查具有null值的列.这个where子句是IS NULL子句. select * from T_Check_InfoDetail 得到如下视图: 这个时候我们需要检索CheckValueString列为NULL值,ResultRemarks(该字段为空的记录) 我会这么写代码 select * fro

java打开文件夹(含判断操作系统工具类和解压缩工具类)

1.Runtime.getRuntime().exec("explorer D:\\Java"); 2.java.awt.Desktop.getDesktop().open(new File("D:\\Java")); 4.java.awt.Desktop.getDesktop().browse(...) 3. try { String[] cmd = new String[5]; cmd[0] = "cmd"; cmd[1] = "/

为变量或字符串对象赋空值null、长度为0的字符串、不赋值 占不占内存

代码: public class TestNullAndNothing { int a;//自动赋值为0:如果是对象,自动赋值为null public static void main(String[] args) { String s=""; System.out.println("长度为0的字符串:"+RamUsageEstimator.sizeOf(s));//打印所占内存大小 String ss=null; System.out.println("

java中的null注意事件总结

对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认为Java发明者知道null与它解决的问题相比带来了更多的麻烦,但是null仍然陪伴着Java. 我越发感到惊奇,因为java的设计原理是为了简化事情,那就是为什么没有浪费时间在指针.操作符重载.多继承实现的原因,null却与此正好相反.好吧,我真的不知道这个问题的答案,我知道的是不管null被Ja

java.sql.SQLException: null, message from server: “Host ‘xxx’ is not allowed to connect

java.sql.SQLException: null, message from server: “Host ‘xxx’ is not allowed to connect 2014年06月29日 ⁄ 综合 ⁄ 共 637字 ⁄ 字号 小 中 大 ⁄ 评论关闭 java.sql.SQLException: null,  message from server: "Host 'xxx' is not allowed to connect to this MySQL server": j

转!!Java中关于Null的9个解释(Java Null详解)

对于Java程序员来说,null是令人头痛的东西.时常会受到空指针异常(NPE)的骚扰.连Java的发明者都承认这是他的一项巨大失误.Java为什么要保留null呢?null出现有一段时间了,并且我认为Java发明者知道null与它解决的问题相比带来了更多的麻烦,但是null仍然陪伴着Java. 我越发感到惊奇,因为java的设计原理是为了简化事情,那就是为什么没有浪费时间在指针.操作符重载.多继承实现的原因,null却与此正好相反.好吧,我真的不知道这个问题的答案,我知道的是不管null被Ja