วีดีโอ: วัตถุสองชิ้นจะเท่ากันเสมอเมื่อวิธี CompareTo () ของพวกเขาคืนค่าศูนย์หรือไม่
2024 ผู้เขียน: Lynn Donovan | [email protected]. แก้ไขล่าสุด: 2023-12-15 23:54
มัน เป็น แนะนำว่า เปรียบเทียบกับ เท่านั้น ผลตอบแทน 0, หากโทรไปที่ เท่ากับ บน วัตถุเดียวกัน จะ กลับ จริง: เปรียบเทียบกับ (e2) == 0 มีเหมือนกัน ค่าบูลีนเป็น e1 เท่ากับ (e2) สำหรับทุก e1 และ e2 ของคลาส C โปรดทราบว่า null เป็น ไม่ใช่ตัวอย่างของคลาสใด ๆ และ e.
นอกจากนี้ เป็นไปได้ไหมที่ค่าเท่ากับ () จะคืนค่าเท็จแม้ว่าเนื้อหาของสองอ็อบเจ็กต์จะเหมือนกัน?
4 คำตอบ ในจาวาวิธีการบูลีนสาธารณะ เท่ากับ ( วัตถุ obj) สืบทอดมาจาก วัตถุ . อย่างไรก็ตาม การนำวิธีการตามที่กำหนดไว้ใน วัตถุ คลาสคือ เท่ากับ วิธีการจะ กลับมาถ้า และเท่านั้น ถ้า NS สองวัตถุ ที่นำมาเปรียบเทียบคือ เหมือนกัน ตัวอย่าง.
ต่อจากนั้น คำถามคือ เหตุใด CompareTo () จึงควรสอดคล้องกับวิธีเท่ากับ () ใน Java ที่เป็นเช่นนี้เพราะอินเทอร์เฟซแผนที่ถูกกำหนดในแง่ของ เท่ากับ การดำเนินการ แต่แผนที่จะทำการเปรียบเทียบคีย์ทั้งหมดโดยใช้ เปรียบเทียบกับ (หรือเปรียบเทียบ) กระบวนการ , ดังนั้นสองคีย์ที่ถือว่า เท่ากับ โดยสิ่งนี้ กระบวนการ คือ จากมุมมองของแผนที่ที่จัดเรียงแล้ว เท่ากับ.
เมื่อพิจารณาถึงสิ่งนี้ อะไรคือความแตกต่างระหว่างวิธี == เท่ากับ () และ CompareTo ()
เปรียบเทียบกับ : เปรียบเทียบสองสตริงด้วยพจนานุกรมศัพท์ เท่ากับ : เปรียบเทียบสตริงนี้กับอ็อบเจ็กต์ที่ระบุ เปรียบเทียบกับ เปรียบเทียบสองสตริงด้วยอักขระ (ที่ดัชนีเดียวกัน) และส่งคืนจำนวนเต็ม (บวกหรือลบ) ตามลำดับ เท่ากับ () ตรวจสอบว่าสองวัตถุเหมือนกันหรือไม่และส่งคืนบูลีน
เราสามารถแทนที่เมธอด CompareTo ได้ไหม
แทนที่วิธีเปรียบเทียบเพื่อ ควรคืนค่าจำนวนเต็มลบ (โดยปกติ -1) หากวัตถุที่ทริกเกอร์ปัจจุบันน้อยกว่าค่าที่ผ่าน หนึ่ง และจำนวนเต็มบวก (โดยปกติคือ +1) ถ้ามากกว่า และ 0 ถ้าเท่ากัน วิธีเปรียบเทียบกับวิธี ควรส่งข้อยกเว้นหากวัตถุที่ส่งผ่านมีประเภทหรือค่าว่างที่เข้ากันไม่ได้
แนะนำ:
วิธี CompareTo ทำงานอย่างไร
วิธีเปรียบเทียบTo() ทำงานโดยคืนค่า int ที่เป็นค่าบวก ค่าลบ หรือศูนย์ มันเปรียบเทียบวัตถุโดยทำการเรียกไปยังวัตถุที่เป็นอาร์กิวเมนต์ จำนวนลบหมายความว่าวัตถุที่ทำการโทรนั้น "น้อยกว่า" กว่าอาร์กิวเมนต์