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是堆內儲存,兩者對象不同,所有會有漏判現象,一個容易忽略的錯誤。