String的非空判断:str!=""的为空判断出错问题

if(str!=null && str!= ""){
}
这是错误的判断
String str1 = "";
        String str2 = new String("");
        if (str1 != null && str1 != "") {
            System.out.println("str1赋值的空");
        }
        if (str2 != null && str2 != "") {
            System.out.println("str2赋值的空");
        }
        System.out.println("over");

        // 正确的判断
        if (str1 != null && str1.length() > 0) {
            System.out.println("str1.length赋值的空");
        }
        if (str2 != null && str2.length() > 0) {
            System.out.println("str2.length赋值的空");
        }
        System.out.println("over.length");

结果:

str2赋值的空
over
over.length

Process finished with exit code 0

原因就是str1是常量储存,而str2是堆内储存,两者对象不同,所有会有漏判现象,一个容易忽略的错误。


原文地址:https://www.cnblogs.com/rainersha/p/11720897.html