หากคุณเป็นเหมือนฉันเมื่อฉันเริ่มใช้ Java ครั้งแรกฉันต้องการใช้ตัวดำเนินการ "==" เพื่อทดสอบว่าสองอินสแตนซ์สตริงมีค่าเท่ากัน แต่ดีขึ้นหรือแย่ลงนั่นไม่ใช่วิธีที่ถูกต้องใน Java
ในบทช่วยสอนนี้ฉันจะสาธิตวิธีที่แตกต่างกันหลายวิธีเพื่อเปรียบเทียบสตริง Java อย่างถูกต้องโดยเริ่มจากวิธีที่ฉันใช้เป็นส่วนใหญ่ ในตอนท้ายของบทช่วยสอนการเปรียบเทียบ Java String นี้ฉันจะกล่าวถึงสาเหตุที่ตัวดำเนินการ "==" ไม่ทำงานเมื่อเปรียบเทียบสตริง Java
ตัวเลือกที่ 1: การเปรียบเทียบ Java String กับวิธีการเท่ากับ
ส่วนใหญ่เวลา (อาจ 95% ของเวลา) ฉันเปรียบเทียบสตริงกับวิธีการเท่ากับของคลาส Java String เช่นนี้:
if (string1.equals(string2))
String นี้เท่ากับวิธีที่ดูที่สองสตริง Java และถ้าพวกเขามีสตริงที่เหมือนกันแน่นอนตัวอักษรพวกเขาจะถือว่าเท่าเทียมกัน
ลองดูตัวอย่างการเปรียบเทียบสตริงด่วนด้วยเมธอด equals หากรันการทดสอบต่อไปนี้ทั้งสองสตริงจะไม่ถูกพิจารณาว่าเท่ากันเนื่องจากอักขระไม่เหมือนกันทุกประการ (กรณีของอักขระแตกต่างกัน):
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
แต่เมื่อทั้งสองสายมีสายอักขระที่เหมือนกันแน่นอนวิธีการเท่ากับจะกลับจริงเช่นในตัวอย่างนี้:
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
ตัวเลือกที่ 2: การเปรียบเทียบสตริงกับเมธอด equalsIgnoreCase
ในการทดสอบเปรียบเทียบสตริงคุณจะต้องเพิกเฉยไม่ว่าสตริงนั้นจะเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก เมื่อคุณต้องการทดสอบสตริงของคุณสำหรับความเท่าเทียมกันในลักษณะที่ไม่คำนึงถึงขนาดตัวพิมพ์ให้ใช้เมธอด equalsIgnoreCase ของคลาส String เช่นนี้
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
ตัวเลือก 3: การเปรียบเทียบสตริงของ Java กับเมธอด comparTo
นอกจากนี้ยังมีวิธีที่สามที่พบได้น้อยกว่าในการเปรียบเทียบสตริง Java และนั่นคือด้วยเมธอด String classToTo ถ้าทั้งสองสายเหมือนกันทุกประการวิธีเปรียบเทียบกับจะส่งคืนค่า 0 (ศูนย์) นี่คือตัวอย่างคร่าวๆของวิธีการเปรียบเทียบสตริงนี้:
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
ในขณะที่ฉันกำลังเขียนเกี่ยวกับแนวคิดเรื่องความเท่าเทียมกันใน Java สิ่งสำคัญคือต้องทราบว่าภาษา Java มีวิธีการเท่ากับในคลาส Java Object Object เมื่อใดก็ตามที่คุณกำลังสร้างวัตถุของคุณเองและคุณต้องการที่จะให้วิธีการดูว่าวัตถุสองอย่างของคุณ "เท่ากัน" คุณควรจะแทนที่ (และนำไปใช้) วิธีนี้เท่ากับในชั้นเรียนของคุณ (ในลักษณะเดียวกับภาษา Java พฤติกรรมความเท่าเทียมกัน / การเปรียบเทียบนี้ในเมธอด String เท่ากับ)
คุณอาจต้องการดู==, .equals (), comparTo () และ compar ()