1. การเปรียบเทียบสตริง
ทั้งหมดนี้เป็นสิ่งที่ดีและดี แต่คุณจะเห็นว่าจริง ๆ แล้วสตริงs1
และs2
สตริงนั้นเหมือนกัน หมายความว่ามีข้อความเดียวกัน เมื่อเปรียบเทียบสตริง คุณจะบอกโปรแกรมอย่างไรไม่ให้ดูที่อยู่ของString
วัตถุ แต่ดูที่เนื้อหา
เพื่อช่วยเราในเรื่องนี้ คลาสของ Java String
มีequals
เมธอด การเรียกมันมีลักษณะดังนี้:
string1.equals(string2)
เมธอดนี้จะส่งกลับtrue
หากสตริงเหมือนกันและfalse
หากไม่เหมือนกัน
ตัวอย่าง:
รหัส | บันทึก |
---|---|
|
|
ตัวอย่างเพิ่มเติม:
รหัส | คำอธิบาย |
---|---|
|
false |
|
true |
|
true |
|
true |
2. การเปรียบเทียบสตริงที่ไม่คำนึงถึงขนาดตัวพิมพ์
ในตัวอย่างที่แล้ว คุณเห็นว่าการเปรียบเทียบให้ผลตอบแทน แท้จริงแล้วสตริงไม่เท่ากัน แต่..."Hello".equals("HELLO")
false
เห็นได้ชัดว่าสตริงไม่เท่ากัน ที่กล่าวว่าเนื้อหาของพวกเขามีตัวอักษรเหมือนกันและแตกต่างกันเฉพาะตัวอักษรเท่านั้น มีวิธีใดที่จะเปรียบเทียบพวกเขาและไม่สนใจตัวพิมพ์เล็ก ๆ น้อย ๆ ? นั่นคือเพื่อให้ผลตอบแทน?"Hello".equals("HELLO")
true
และคำตอบสำหรับคำถามนี้คือใช่ ใน Java ชนิดString
มีเมธอดพิเศษอื่น: equalsIgnoreCase
. การเรียกมันมีลักษณะดังนี้:
string1.equalsIgnoreCase(string2)
ชื่อของเมธอดแปลประมาณว่าเปรียบเทียบ แต่ไม่สนใจ case ตัวอักษรในชื่อเมธอดมีเส้นแนวตั้งสองเส้น เส้นแรกเป็นตัวพิมพ์เล็กและL
เส้นที่สองเป็นตัวพิมพ์ใหญ่ i
อย่าปล่อยให้สิ่งนั้นทำให้คุณสับสน
ตัวอย่าง:
รหัส | บันทึก |
---|---|
|
|
3. ตัวอย่างการเปรียบเทียบสตริง
ลองยกตัวอย่างง่ายๆ หนึ่งข้อ: สมมติว่าคุณต้องป้อนสองบรรทัดจากแป้นพิมพ์และตรวจสอบว่าเหมือนกันหรือไม่ นี่คือลักษณะของรหัส:
Scanner console = new Scanner(System.in);
String a = console.nextLine();
String b = console.nextLine();
String result = a.equals(b) ? "Same" : "Different";
System.out.println(result);
4. ความแตกต่างที่น่าสนใจของการเปรียบเทียบสตริง
มีความแตกต่างที่สำคัญประการหนึ่งที่คุณต้องระวัง
หากคอมไพเลอร์ Javaพบสตริงที่เหมือนกันหลายสตริงในโค้ดของคุณ (โดยเฉพาะในโค้ดของคุณ) ก็จะสร้างเพียงออบเจกต์เดียวสำหรับสตริงเหล่านั้นเพื่อประหยัดหน่วยความจำ
String text = "This is a very important message";
String message = "This is a very important message";
และนี่คือสิ่งที่หน่วยความจำจะมีเป็นผลลัพธ์:

และถ้าคุณเปรียบเทียบtext == message
ที่นี่ คุณจะtrue
ได้ ดังนั้นอย่าแปลกใจไป
หากคุณต้องการการอ้างอิงให้แตกต่างด้วยเหตุผลบางประการ คุณสามารถเขียนสิ่งนี้:
String text = "This is a very important message";
String message = new String ("This is a very important message");
หรือสิ่งนี้:
String text = "This is a very important message";
String message = new String (text);
ในทั้งสองกรณีนี้ ตัวแปร text
และmessage
ชี้ไปที่วัตถุต่างๆ ที่มีข้อความเดียวกัน
GO TO FULL VERSION