扫码关注官方订阅号
if(id!=null&&id!="")代码中经常这样写,空字符串跟null 都不用equals吗?
光阴似箭催人老,日月如移越少年。
首先,你的id!=""这种写法是错误的,要写成!id.equals("")。 其次,要明白==与equals的含义
id!=""
!id.equals("")
==
equals
==表示两个对象是同一个对象的引用,==null表示这个对象不是任何实例对象的引用,该对象为空。
==null
equals是String类中的方法,表示两个字符串的内容相同。
一直都这么写的,同问,为啥呢?
空字符串其实是要用equals的,否则会出错。null是可以使用!=
下面的代码,结果为false
String d = new String(""); System.out.println(""==d);
所以必须使用equals来判断空字符串,如
public static boolean isEmpty(String str) { return (str == null || "".equals(str)); }
或者使用length来判断并扩展到任何CharSequence,如
public static boolean isEmpty(final CharSequence cs) { return cs == null || cs.length() == 0; }
id==null时,表示id这个引用没有指向任何对象,只是一个引用;Java中具体的对象才可以调用方法(这里就是equals())。所以当id==null时调用equals()是会抛出NullPointerException。
id==null
equals()
NullPointerException
这代码写错,没用equals比较空串,而且对于空字符串有很多,比如tab,回车之类的都没有check,有n多现成的函数可以用,比如apache commons里面的StingUtils.isBlank方法,Guava的Strings.isNullOrEmpty方法都可以判断null和空白字符串的情况。
还是需要明白 == 与 equals 的区别, ""与 null的区别 ,== 是比较值是否相等 或 引用类型的地址是否相等equals 是比较引用类型地址的值 即内容是否相等
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
首先,你的
id!=""这种写法是错误的,要写成!id.equals("")。其次,要明白
==与equals的含义==表示两个对象是同一个对象的引用,==null表示这个对象不是任何实例对象的引用,该对象为空。equals是String类中的方法,表示两个字符串的内容相同。一直都这么写的,同问,为啥呢?
空字符串其实是要用equals的,否则会出错。null是可以使用!=
下面的代码,结果为false
所以必须使用equals来判断空字符串,如
或者使用length来判断并扩展到任何CharSequence,如
id==null时,表示id这个引用没有指向任何对象,只是一个引用;Java中具体的对象才可以调用方法(这里就是equals())。所以当id==null时调用equals()是会抛出NullPointerException。这代码写错,没用equals比较空串,而且对于空字符串有很多,比如tab,回车之类的都没有check,有n多现成的函数可以用,比如apache commons里面的StingUtils.isBlank方法,Guava的Strings.isNullOrEmpty方法都可以判断null和空白字符串的情况。
还是需要明白 == 与 equals 的区别, ""与 null的区别 ,
== 是比较值是否相等 或 引用类型的地址是否相等
equals 是比较引用类型地址的值 即内容是否相等