如何有效的判断字符串是否为空
很多人觉得
判断字符串是否为空
只要:
if(str==""){...
}
就可以!
你也许会想判断字符串是否为空当然是这样,这么一个小东西
还有其他方法吗?哈哈!
殊不知判断字符串是否为空还
很多方法和
很多要注意的地方,小小的
优化可以使程序的
执行效率和程序员的开发效率得到提升。
初级:表达式优化
- 01
大家知道计算机中 判断数值比判断字符串的运行速度 快得多,所以可以把判断字符串变量 内容是否为“”改为判断字符串的 长度是否为0。 if(str.length()==0){...}
- 02
这样有出现一个 安全问题!! length()属于str对象的方法,如果str 对象为空时再执行 length()会抛出空指针异常。 所以先要 判断str对象是否为空: if(str!=null && str.length()==0){ }
- 03
很多程序员喜欢写成这样 if(str!=null && str.length()!=0){ //字符串不等于空时执行 } 因为把 不为空时的执行代码 放在前面是我们的 习惯,但是这样会 降低执行 效率。 str!=null等价于!(str==null) 这就意味要 先str==null然后把判断 结果真转为假,假转为真。这样多出一步, 执行效率变慢。所以建议写成上边的样子。
晋级:把判断字符串是否为空封装起来
- 01
问题:为什么把判断 字符串是否为空封装起来?毕竟只有一行代码 有必要吗?
- 02
如果这个表达式非常复杂,有多个子表达式组成,比如: (str1!=null && str1.length()==0)&&(str!=null && str.length()==0)&&... 这种情况下是不是用 方法代替子表达式更容易理解
- 03
再者很多 表达式可能在 一个项目里可能出现许多 许多次,例如: str!=null && str.length()!=0 我们 不能保证这个项目里 所有程序员都能像我们这样把一个表达式做的如此 完美无缺
- 04
新建一个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; } }