昨天修改项目bug的时候,刚开始很郁闷,明明为空的变量判断是否为空时居然显示为false,我吃惊?这也是最近java最闹心的bug之一?
情况是这样的,
String photoDir = request.getParameter("photoDir");
System.out.println("photoDir="+photeDir);
System.out.println("============"+(photoDir!=null && !"".equals(photoDir)))
结果控制台,却打印:
photoDir=null
============false
什么情况?通过debug模式发现,页面其它为空的变量值显示为null,但是photoDir却显示为"null"!
问题就出在这里,null是一个空对象,"null"是个字符串对象,它们肯定不等!
所以比较准确的判断不为空的方式为:
if(tm.getPhoto()!=null && !"".equals(tm.getPhoto()) && !"null".equals(tm.getPhoto())){
、、、
}
补充:
null是个空对象,不占内存;""是字符串对象,占用内存!