1.一个是对象为Null(堆内存中无被指向的对象地址,IsNull),一个是值为空(IsEmpty) obj==null: 功能:返回Boolean的值,指明表达是否不包含任何有效数据。NULL表示的是数据值未知或不可用,它不表示零(数字值或二进制值)、零长度的字符串或空白(字符值); obj.isEmpty(): 功能:用于判断一个变量是否已初始化,如果变量未初始化或显式地设置为Empty,则函数IsEmpty返回True;否则函数返回False; 如果obj是null的话调用obj.isEmpty() 抛NullpointException 因为那个时候JDK不知道obj是什么东西,所以根本没办法调用 这就相当与,你要喝水, isNull就是判断是不是连水杯都没有 isEmpty就是判断水杯里面没有水 object.equals(object): " ".equals(object): 左边不能出现为空的情况,不然会抛NullpointException " "这个不是null值,他代表一个空格字符串如下有代码验证:package cn.lz.life.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Test { private static final Logger log = LoggerFactory.getLogger(Test.class); public static void main(String[] args) { String a = new String(); String b = ""; String c = null; if (a == null) { log.info("a***************isNull"); } if (a.isEmpty()) { log.info("a***************isEmpty"); } if ("".equals(a)) { log.info("a***************空字符串"); } if (b == null) { log.info("b***************isNull"); } if (b.isEmpty()) { log.info("b***************isEmpty"); } if ("".equals(b)) { log.info("b***************空字符串"); } if (c == null) { log.info("c***************isNull"); } if (c.isEmpty()) { log.info("c***************isEmpty"); } if ("".equals(c)) { log.info("c***************空字符串"); } } }
控制台打印:13:49:44.129 [main] INFO cn.lz.life.util.Test - a***************isEmpty 13:49:44.137 [main] INFO cn.lz.life.util.Test - a***************空字符串 13:49:44.137 [main] INFO cn.lz.life.util.Test - b***************isEmpty 13:49:44.137 [main] INFO cn.lz.life.util.Test - b***************空字符串 13:49:44.137 [main] INFO cn.lz.life.util.Test - c***************isNull可以看出:a局部变量有可指向的对象,对象不为null,但对象的值为空,默认值为“ ”空字符串;a局部变量有可指向的对象,对象不为null,但对象的值为空,被赋值为“ ”空字符串;c局部变量无可指向的对象;
obj==null和obj.isEmpty()还有"".equals()有什么区别,equals
最新推荐文章于 2025-01-15 09:13:13 发布