A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Camwly 中级黑马   /  2015-11-23 12:24  /  862 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如代码所示:public class NullDemo {
public void testNull(String str)
{
          if(!str.equals("")&&str!=null)
          {
                  System.out.println("不为空");
          }
}
}
事实上,上面的例子是有错的,不过很多人很容易犯错,我也一样。我们在判断一个字符串同时不为null也不为“”时,我们应该这样if(str!=null&&!str.equal("")),因为如果先判断!str.equal("")时若str是null的话程序就会报错。所以应该先判断str!=null。我们知道&&是短路的,只要不满足前一个条件,后面的一句就不会执行,所以但str为null时,就不会再执行!str.equal("")这一句了。一个小知识点,容易出错,大家多注意。

9 个回复

倒序浏览
请教下,if(str!=null&&!str.equal(""))和if(str!=null&&str!=""),有什么区别咩?
回复 使用道具 举报
还是没有搞懂...
回复 使用道具 举报
""是对象,可以调用方法.而null是常量,不可以调用方法
回复 使用道具 举报
先跟null比较判断是否存在值,再判断值是否为“”。如果本身是null然后判断是否相等于“”是会出错的。
回复 使用道具 举报
学习了。感谢
回复 使用道具 举报
好东西,学习了,谢谢
回复 使用道具 举报
注意了。
回复 使用道具 举报
null一般用于对象的空赋值,意思是对象变量没有指向对象的内存地址(对象没有实例化),“”是空字符,不是一个概念。但是因为String的特殊性,存在这两个所谓的空。
回复 使用道具 举报
学习了,这种问题如果不注意真的会写出来!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马