ฉันต้องการดำเนินการบางอย่างเฉพาะในกรณีที่สตริงของฉันมีค่าที่มีความหมาย ดังนั้นฉันจึงลองทำสิ่งนี้
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
เช่นนั้นคุณจะเรียกใช้วิธีการในวิธีนั้นได้อย่างไร :)