วัตถุสองชิ้นจะเท่ากันเสมอเมื่อวิธี CompareTo () ของพวกเขาคืนค่าศูนย์หรือไม่
วัตถุสองชิ้นจะเท่ากันเสมอเมื่อวิธี CompareTo () ของพวกเขาคืนค่าศูนย์หรือไม่

วีดีโอ: วัตถุสองชิ้นจะเท่ากันเสมอเมื่อวิธี CompareTo () ของพวกเขาคืนค่าศูนย์หรือไม่

วีดีโอ: วัตถุสองชิ้นจะเท่ากันเสมอเมื่อวิธี CompareTo () ของพวกเขาคืนค่าศูนย์หรือไม่
วีดีโอ: BRSสอนสดF ปฏิบัติonewayANOVAโดยspss 2024, อาจ
Anonim

มัน เป็น แนะนำว่า เปรียบเทียบกับ เท่านั้น ผลตอบแทน 0, หากโทรไปที่ เท่ากับ บน วัตถุเดียวกัน จะ กลับ จริง: เปรียบเทียบกับ (e2) == 0 มีเหมือนกัน ค่าบูลีนเป็น e1 เท่ากับ (e2) สำหรับทุก e1 และ e2 ของคลาส C โปรดทราบว่า null เป็น ไม่ใช่ตัวอย่างของคลาสใด ๆ และ e.

นอกจากนี้ เป็นไปได้ไหมที่ค่าเท่ากับ () จะคืนค่าเท็จแม้ว่าเนื้อหาของสองอ็อบเจ็กต์จะเหมือนกัน?

4 คำตอบ ในจาวาวิธีการบูลีนสาธารณะ เท่ากับ ( วัตถุ obj) สืบทอดมาจาก วัตถุ . อย่างไรก็ตาม การนำวิธีการตามที่กำหนดไว้ใน วัตถุ คลาสคือ เท่ากับ วิธีการจะ กลับมาถ้า และเท่านั้น ถ้า NS สองวัตถุ ที่นำมาเปรียบเทียบคือ เหมือนกัน ตัวอย่าง.

ต่อจากนั้น คำถามคือ เหตุใด CompareTo () จึงควรสอดคล้องกับวิธีเท่ากับ () ใน Java ที่เป็นเช่นนี้เพราะอินเทอร์เฟซแผนที่ถูกกำหนดในแง่ของ เท่ากับ การดำเนินการ แต่แผนที่จะทำการเปรียบเทียบคีย์ทั้งหมดโดยใช้ เปรียบเทียบกับ (หรือเปรียบเทียบ) กระบวนการ , ดังนั้นสองคีย์ที่ถือว่า เท่ากับ โดยสิ่งนี้ กระบวนการ คือ จากมุมมองของแผนที่ที่จัดเรียงแล้ว เท่ากับ.

เมื่อพิจารณาถึงสิ่งนี้ อะไรคือความแตกต่างระหว่างวิธี == เท่ากับ () และ CompareTo ()

เปรียบเทียบกับ : เปรียบเทียบสองสตริงด้วยพจนานุกรมศัพท์ เท่ากับ : เปรียบเทียบสตริงนี้กับอ็อบเจ็กต์ที่ระบุ เปรียบเทียบกับ เปรียบเทียบสองสตริงด้วยอักขระ (ที่ดัชนีเดียวกัน) และส่งคืนจำนวนเต็ม (บวกหรือลบ) ตามลำดับ เท่ากับ () ตรวจสอบว่าสองวัตถุเหมือนกันหรือไม่และส่งคืนบูลีน

เราสามารถแทนที่เมธอด CompareTo ได้ไหม

แทนที่วิธีเปรียบเทียบเพื่อ ควรคืนค่าจำนวนเต็มลบ (โดยปกติ -1) หากวัตถุที่ทริกเกอร์ปัจจุบันน้อยกว่าค่าที่ผ่าน หนึ่ง และจำนวนเต็มบวก (โดยปกติคือ +1) ถ้ามากกว่า และ 0 ถ้าเท่ากัน วิธีเปรียบเทียบกับวิธี ควรส่งข้อยกเว้นหากวัตถุที่ส่งผ่านมีประเภทหรือค่าว่างที่เข้ากันไม่ได้

แนะนำ: