如何有效的判断字符串是否为空
很多人觉得判断字符串是否为空只要:if(str==""){...} 就可以! 你也许会想判断字符串是否为空当然是这样,这么一个小东西还有其他方法吗?哈哈!殊不知判断字符串是否为空还很多方法和很多要注意的地方,小小的优化可以使程序的执行效率和程序员的开发效率得到提升。
工具/原料
懂得JAVA编程
初级:表达式优化
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、 在《重构》里有个以多态代替重复型判断的方法与今天的方法很相似。我在下篇经验中会介绍此方法,到时在这一篇这一栏附上链接。 敬请期待!