null和"null"的区别

       昨天修改项目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是个空对象,不占内存;""是字符串对象,占用内存!

你可能感兴趣的:(null,空)