黑马程序员技术交流社区

标题: “”和null使用的易出错点 [打印本页]

作者: Camwly    时间: 2015-11-23 12:24
标题: “”和null使用的易出错点
如代码所示: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("")这一句了。一个小知识点,容易出错,大家多注意。
作者: 笑出了翔    时间: 2015-11-23 23:36
请教下,if(str!=null&&!str.equal(""))和if(str!=null&&str!=""),有什么区别咩?
作者: 晚睡晚起的    时间: 2015-11-23 23:50
还是没有搞懂...
作者: zqiang    时间: 2015-11-24 00:20
""是对象,可以调用方法.而null是常量,不可以调用方法
作者: 龙sama    时间: 2015-11-24 10:41
先跟null比较判断是否存在值,再判断值是否为“”。如果本身是null然后判断是否相等于“”是会出错的。
作者: hdhunter    时间: 2015-11-24 10:48
学习了。感谢
作者: 小麦大米    时间: 2015-11-24 18:25
好东西,学习了,谢谢
作者: 萧未然    时间: 2015-11-24 19:43
注意了。
作者: yuhongzhen    时间: 2015-11-24 20:02
null一般用于对象的空赋值,意思是对象变量没有指向对象的内存地址(对象没有实例化),“”是空字符,不是一个概念。但是因为String的特殊性,存在这两个所谓的空。
作者: 13277988289    时间: 2015-11-24 20:02
学习了,这种问题如果不注意真的会写出来!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2