java中做字符串非空判断,为什么要同时判断字符串不为null和不等于空串?

如题所述

对于null而言。如果一个字符串为null,例如String a = null; 那么此时,调用字符串对象a的方法,例如a.length(); 就会报空指针异常,即NullPointerException。如果这个异常没有被catch住的话,a.length();后面的代码就都不会被执行了。同时,如果这个程序是服务器程序,那么还会出现500这种属于比较严重的问题。所以,在使用字符串对象前要先判断一下其不为null。
不等于空串这个就是根据具体业务而定了,空串也就是字符串长度为0。那么这种字符串在很多时候是没什么意义的。如果一个字符串是空串,那么就可以不执行后面的业务逻辑了(视具体业务而定)。所以这种情况也需要判断。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-03-05
简而言之就是 : null的出现是声明了对象,判断没有给对象开辟空间; “”空是判断给对象开辟了空间但没有值的情况,String类型同时具备这两种情况,所以都要进行判断,已达到万无一失。
//判断字符串为空串
public boolean checkStringIsNull(String str){
if(str ==null || "".equals(str)){
return true;

}
return false;
}
第2个回答  2021-03-05
这个得看场景。
1、一般在程序开发者,对null和字符串""(其实还有" "这类)做非空判断,如果在我们程序的业务处理中,这两类在处理的业务逻辑上认为是一样的话,就需要同时判断。
2、有些业务场景中对null和字符串"",做了严格区分,这时候就得区别判断了
事实上,大部分处理场景就跟第一点差不多,所以比较常见。
总而言之,就是需要具体场景分析。
另外,对于这种情况判断,题主可以上网看看StringUtils函数
第3个回答  2021-03-05
空字符串和字符串不为空是两个概念,需要唯一确定。
相似回答