ฟังก์ชันเท่ากับได้ถูกกำหนดไว้ในวัตถุคลาสพื้นฐานแล้ว ซอร์สโค้ดมีดังนี้
คัดลอกรหัสรหัส ดังต่อไปนี้:
บูลีนสาธารณะเท่ากับ (Object obj) {
กลับ (นี่ == obj);
-
จะเห็นได้จากซอร์สโค้ดว่าเมธอดเท่ากับ () เริ่มต้นนั้นสอดคล้องกับ "==" เป็นการอ้างอิงถึงวัตถุที่กำลังเปรียบเทียบ ไม่ใช่ค่าของวัตถุ (ซึ่งสอดคล้องกับสามัญสำนึกของเราที่เท่ากับ() คือ ใช้ในการเปรียบเทียบวัตถุ เหตุผลก็คือ คลาสส่วนใหญ่ใน Java ได้แทนที่เมธอดเท่ากับ () ต่อไปนี้เป็นตัวอย่างของคลาส String
[จาวา]
คัดลอกรหัสรหัส ดังต่อไปนี้:
/** ค่านี้ใช้สำหรับจัดเก็บอักขระ */
ค่าถ่านสุดท้ายส่วนตัว [];
/** offset คือดัชนีแรกของการจัดเก็บข้อมูลที่ใช้ */
ออฟเซ็ต int สุดท้ายส่วนตัว
/** จำนวนคือจำนวนอักขระใน String */
จำนวน int สุดท้ายส่วนตัว
[java] ดู plaincopyprint?
บูลีนสาธารณะเท่ากับ (Object anObject) {
ถ้า (นี่ == anObject) {
กลับเป็นจริง;
-
ถ้า (อินสแตนซ์ของวัตถุของสตริง) {
สตริง anotherString = (สตริง) anObject;
int n = นับ;
ถ้า (n == anotherString.count) {
ถ่าน v1[] = ค่า;
ถ่าน v2[] = anotherString.value;
int i = ชดเชย;
int j = anotherString.offset;
ในขณะที่ (n-- != 0) {
ถ้า (v1[i++] != v2[j++])
กลับเท็จ;
-
กลับเป็นจริง;
-
} //www.software8.co
กลับเท็จ;
-
Equals() ของคลาส String นั้นง่ายมาก เพียงแปลงคลาส String ให้เป็นอาร์เรย์อักขระแล้วเปรียบเทียบทีละนิด
โดยสรุป เมื่อใช้เมธอดเท่ากับ() เราควรคำนึงถึง:
1. เนื่องจากเท่ากับ() ถูกนำไปใช้กับวัตถุแบบกำหนดเอง คุณต้องแทนที่เมธอดเท่ากับ() ของระบบในคลาสแบบกำหนดเอง
2.ความรู้น้อยปัญหาใหญ่