ใน Java ทั้ง == และเมธอด equals() ใช้เพื่อตรวจสอบความเท่าเทียมของตัวแปรหรือออบเจ็กต์สองตัว
ต่อไปนี้คือความแตกต่างที่สำคัญระหว่าง == และเมธอด equals()
| ลำดับ | คีย์ | == | เมธอด equals() |
|---|---|---|---|
| 1 | ประเภท | == เป็นออปเปอเรเตอร์ |
equals() เป็นเมธอดของคลาส Object |
| 2 | การเปรียบเทียบ | == ควรใช้ในการเปรียบเทียบอ้างอิง (reference comparison) ตรวจสอบว่าอ้างอิงทั้งสองชี้ไปยังตำแหน่งหน่วยความจำเดียวกันหรือไม่ |
เมธอด equals() ควรใช้ในการเปรียบเทียบเนื้อหา (content comparison) ประเมินเนื้อหาเพื่อตรวจสอบความเท่าเทียม |
| 3 | ออบเจ็กต์ | ออปเปอเรเตอร์ == ไม่สามารถโอเวอร์ไรด์ได้ |
เมธอด equals() หากไม่มีอยู่และใช้ Object.equals() มิฉะนั้นสามารถโอเวอร์ไรด์ได้ |
ตัวอย่าง == เทียบกับเมธอด equals
JavaTester.java
public class JavaTester {
public static void main(String args[]) {
String s1 = new String("TUTORIALSPOINT");
String s2 = new String("TUTORIALSPOINT");
// การเปรียบเทียบอ้างอิง
System.out.println(s1 == s2);
// การเปรียบเทียบเนื้อหา
System.out.println(s1.equals(s2));
// integer-type
System.out.println(10 == 10);
// char-type
System.out.println('a' == 'a');
}
}
ผลลัพธ์
false true true true