如何有效的判断字符串是否为空
1、 大家知道计算机中判断数值比判断字符串的运行速度快得多,所以可以把判断字符串变量内容是否为“”改为判断字符串的长度是否为0。
if(str.length()==0){...}

2、 这样有出现一个安全问题!!
length()属于str对象的方法,如果str对象为空时再执行length()会抛出空指针异常。
所以先要判断str对象是否为空:
if(str!=null && str.length()==0){
}

3、 很多程序员喜欢写成这样
if(str!=null && str.length()!=0){
//字符串不等于空时执行
}
因为把不为空时的执行代码放在前面是我们的习惯,但是这样会降低执行效率。
str!=null等价于!(str==null)
这就意味要先str==null然后把判断结果真转为假,假转为真。这样多出一步,执行效率变慢。所以建议写成上边的样子。

1、问题:为什么把判断字符串是否为空封装起来?毕竟只有一行代码有必要吗?

2、如果这个表达式非常复杂,有多个子表达式组成,比如:
(str1!=null && str1.length()==0)&&(str!=null && str.length()==0)&&...
这种情况下是不是用方法代替子表达式更容易理解

3、再者很多表达式可能在一个项目里可能出现许多许多次,例如:
str!=null && str.length()!=0
我们不能保证这个项目里所有程序员都能像我们这样把一个表达式做的如此完美无缺

4、新建一个strUtril类,把判断字符串是否为空放到这个类的isStrExist方法里:
/** * 已测试
* 字符串工具类
* @author quchangwen
* @create 2016 - 08 - 22 22:00
*/
public class StrUtil {
/**
* 判断字符串是否有值
* @param str
* @return
*/
public static boolean isStrExist(String str){
if(str==null||str.length()==0){
return false;
}
return true;
}
}

1、 在《重构》里有个以多态代替重复型判断的方法与今天的方法很相似。我在下篇经验中会介绍此方法,到时在这一篇这一栏附上链接。
敬请期待!
