关于null和""的区别:
(1) null表示不指向任何东西,调用的话会报空指针异常; 空字符串""表示一个长度为0的字符串,调用是安全的;
(2) null 不是对象,空字符串是对象,所以null没有分配空间,而空字符串分配了空间。空字符串代表了一个实例化的对象。
注意:在判断字符串是否为空时,应先判断是否为对象,是的话再判断是否为空字符串。先确认是不是在内存中分配了一块区域?再判断这块区域的大小。如果对于一个内存中没有分配空间的对象,调用它的方法,就会报空指针异常。
根据以上区别可知,最终的方式是:
先判断是不是对象,如果是,判断长度是不是0,如果不是,就直接判定为空。而逻辑运算符||,具有短路效果的运算符,正好可以满足这个需求:
a||b,假如a为true,则判断b,b也为true,则表达式为true;如果a为false,则表达式直接为false,不会再判断后面的b的结果,这样也不会产生空指针异常。
综上,最终的结果是:
判断字符串为空: str==null || str.length()==0
判断字符串不是空: str!=null && str.length()!=0
Java判断字符串是否为空的四种方法:
方法一:if (str == null || "".equals(str))直观,方便,效率低;
方法二:if (str == null || str.length()<=0) 效率高
方法三:if (str == null || str.isEmpty())效率高
由于第三种方法是java SE 6.0以后才得到应用的,在早期的版本中运行可能会出现兼容性问题,推荐使用方法二。