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