ฉันต้องการดำเนินการบางอย่างเฉพาะในกรณีที่สตริงของฉันมีค่าที่มีความหมาย ดังนั้นฉันจึงลองทำสิ่งนี้
if (!myString.equals("")) {
doSomething
}
และนี่
if (!myString.equals(null)) {
doSomething
}
และนี่
if ( (!myString.equals("")) && (!myString.equals(null))) {
doSomething
}
และนี่
if ( (!myString.equals("")) && (myString!=null)) {
doSomething
}
และนี่
if ( myString.length()>0) {
doSomething
}
และในทุกกรณีโปรแกรมของฉันdoSomethingทั้งๆที่ความจริงที่ว่าสตริงของฉันว่างเปล่า nullมันเท่ากับ ดังนั้นมีอะไรผิดปกติกับที่?
เพิ่ม:
ฉันพบสาเหตุของปัญหา ตัวแปรถูกประกาศเป็นสตริงและด้วยเหตุนี้การnullกำหนดให้กับตัวแปรนี้จึงถูกเปลี่ยนเป็น"null"! ดังนั้นใช้if (!myString.equals("null"))งานได้
System.out.println(myString)อยู่หน้าบล็อก if-if ทันทีเพื่อดูว่ามีอะไรบ้าง
null"?
nullมอบหมายให้ตัวแปรนี้ถูกเปลี่ยนเป็น"null"- นี่เป็นความคิดที่แย่มาก ลองเปลี่ยนการออกแบบนี้ถ้าเป็นไปได้
nullไม่ได้มีวิธีการใด ๆequals()จึงยังไม่ได้ ถ้าmyStringเป็นnullเช่นนั้นคุณจะเรียกใช้วิธีการในวิธีนั้นได้อย่างไร :)