การแนะนำ
คลาส Object: คลาสนี้ java.lang.java เป็นคลาสพาเรนต์ที่สืบทอดโดยคลาสทั้งหมดตามค่าเริ่มต้น
สามวิธีที่ใช้กันทั่วไปในคลาสวัตถุ: toString() , equal() , hashCode()
1. การอธิบายตนเองของวิธีการ toString () วัตถุและการแนะนำตัวเองของวัตถุ
ในระหว่างการอธิบายตัวเองของวัตถุเนื่องจากเป็นปัญหาในการพิมพ์ตัวแปรอินสแตนซ์โดยใช้วิธี get() toString() ใช้เพื่อความเรียบง่าย
สตริงสาธารณะ toString () {return "เรียนรู้ดี" + getNo () + "ชื่อ" + getName ();} System.out.println(s); เทียบเท่ากับ System.out.println(s.toString());
การพิมพ์:
. พิมพ์ค่าโดยตรงเมื่อประเภทข้อมูลพื้นฐาน
ข. Call toString() เมื่ออ้างถึงประเภทข้อมูลและการพิมพ์
หากเมธอด toString() ในคลาสวัตถุไม่ได้เขียนใหม่ให้พิมพ์วัตถุโดยตรงและผลลัพธ์ที่ได้ในคอนโซลคือ:
HashCode ที่มีชื่อเต็ม @ Object
2. การเขียนใหม่เท่ากับ () เมธอดเท่ากับ () ต้องเขียน hashCode () ใหม่
Equals() เปรียบเทียบเนื้อหาของวัตถุสองชิ้นหรือวัตถุสองชิ้น hashCode() เป็นที่อยู่ภายในของวัตถุและเป็นจำนวนเต็ม
== ความแตกต่างระหว่าง Equals ()?
คำตอบ: == การเปรียบเทียบที่จำเป็นคือไบนารีชนิดข้อมูลพื้นฐานเปรียบเทียบค่าตัวเลขและชนิดข้อมูลอ้างอิงเปรียบเทียบที่อยู่
Equals() แบ่งออกเป็น equals() ของคลาสวัตถุและ equals() ของคลาสสตริง equals() ของคลาสวัตถุเท่ากับ == การเปรียบเทียบประเภทการอ้างอิง; equals() ของคลาสสตริงจะแทนที่เมธอด equals() ในคลาสวัตถุเปรียบเทียบค่าตัวอักษร
อินสแตนซ์ของกำหนดชื่อคลาสหรืออาจใช้การสะท้อนกลับ
ชื่อตัวแปรอ้างอิงของวัตถุอินสแตนซ์ของนิพจน์ชื่อคลาสของคลาสหากชื่อตัวแปรอ้างอิงของวัตถุคือคลาสคลาสหรือคลาสคลาสวัตถุที่มีค่าส่งคืนยังคงเป็นจริง
วิธีการ Custom equals() :
1. ประเภทเดียวกัน
2. กำหนดกฎการเปรียบเทียบของคุณเอง
บูลีนสาธารณะเท่ากับ (วัตถุวัตถุ) {// rewrite the equals () วิธีการของวัตถุที่เท่ากัน equalstest = (equalstest) วัตถุ; ถ้า (equalstest.getClass () == equalstest.class) {//??????????????? true;} else {return false;}} else {return false;}}3. วิธี HashCode () ใช้เพื่อเร่งการค้นหาและใช้การค้นหาดัชนี (อัลกอริทึมการสืบค้น, อัลกอริทึมการจัดเก็บ)
public int hashCode () {return this.name.hashCode ()*13 + interger ใหม่ (getage) .hashCode ()*12;}สองหลักการของ HashCode:
1. เมื่อค่าส่งคืนของวัตถุทั้งสอง equals() วิธีการเป็นจริงวิธีการ hashCode() ของพวกเขาจะต้องตรวจสอบให้แน่ใจว่าค่าส่งคืนนั้นเหมือนกัน
2. ใช้ equals() เพื่อเปรียบเทียบคุณสมบัติที่ใช้ในวัตถุและควรใช้ทั้งหมดในการคำนวณ hashCode()
HashCode () อัลกอริทึมแฮช
ความต้องการ:
1. ค่าส่งคืนของ hashCode() เหมือนกันและค่าคืนค่า equals() จะต้องเหมือนกัน
2. เขียนแอตทริบิวต์ใดที่จะใช้ hashCode() และแอตทริบิวต์ใดที่ใช้ในวิธี equals()
หมายเหตุ: HashCode เหมือนกันเท่ากับไม่จำเป็นต้องเหมือนกัน
HashCode ใช้เพื่อตัดสินโฟลเดอร์และใช้เท่ากับเพื่อตัดสินไฟล์
หากวิธีการ hashCode() ไม่ได้ถูกแทนที่เมธอด hashCode () เริ่มต้นจะพบตามที่อยู่ของวัตถุ (ค่าคีย์คือที่อยู่ของวัตถุ)
หากคุณเขียนวิธี hashCode() ใหม่จะไม่สามารถใช้เพื่อพิจารณาว่าเป็นวัตถุเดียวกันหรือไม่
คุณสามารถใช้ System.identityHashCode (ชื่ออ้างอิงของวัตถุ) หาก HashCode เหมือนกันมันเป็นวัตถุเดียวกัน
System.out.println(System.identityHashCode(对象的引用名));
หากไม่มี hashCode() HashCode ของวัตถุจะถูกคำนวณโดยที่อยู่วัตถุ
System.out.println(对象引用名.hashCode());
หมายเหตุ: ไม่ว่าองค์ประกอบที่มีอยู่ในคอลเลกชัน HashSet และวิธีการสำหรับการลบการพึ่งพาการดำเนินการหรือไม่นั้นเป็น hashCode() และ equals() ขององค์ประกอบ
สรุป
ข้างต้นเป็นสามวิธีทั่วไปของวัตถุแม่ใน Java ที่รวบรวมไว้สำหรับคุณ ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com