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是堆内储存,两者对象不同,所有会有漏判现象,一个容易忽略的错误。




					


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM