java中判断空字符串时避免出现空指针的方法

来源:互联网 发布:网络销售模式案例分析 编辑:程序博客网 时间:2024/05/22 06:50

遇到的一点问题,说不上大问题,就是有点烦人,如何判断字符串是否为空:
我们经常使用的方法,比如:

public boolean function (String params){    if (params == null || params.equals("")) {        //todo    }}

上面可能是我们经常使用的方法,这个方法其实是存在弊端的:if语句里面使用的是或判断,就是说当params为null时,equals方法就不会被执行了,而如果把 || 换成 && ,这样手贱一下的后果就是,系统会报空指针异常。因为当params == null 后,再去判断equals语句,params怎么可能又是null ,又为空字符串呢。所以在这里大家要明确一下null 和“”(空字符串)的区别。
“”分配了内存 ;null没有。
调用null的字符串的方法会抛空指针异常。
“”是一个字符串(String).它在内存中是存在的。它可以使用Object对象中的方法(如”“.toString();”“.equals()) ,而null它是一个空对象.在内存中是不存在的.它不可以使用Object对象中的方法 。
String str1 = null; str引用为空
String str2 = “”; str应用一个空串
也就是null没有分配空间,”“分配了空间,因此str1还不是一个实例化的对象,而str2已经实例化。
注意因为null不是对象,”“是对象。所以比较的时候必须是 if(str1==null){….}和if(str2.equals(“”)){}
对象用equals比较,null用等号比较。因此,如果str1=null;下面的写法错误:
if(str1.equals(“”)||str1==null){
//如果str1没有值,则….
//todo
}
正确的写法是 if(str1==null||str1.equals(“”)){
//先判断是不是对象,如果是,再判断是不是空字符串
//todo
}

0 0
原创粉丝点击