האם שני אובייקטים יהיו תמיד שווים כאשר השיטה compareTo () שלהם מחזירה אפס?
האם שני אובייקטים יהיו תמיד שווים כאשר השיטה compareTo () שלהם מחזירה אפס?

וִידֵאוֹ: האם שני אובייקטים יהיו תמיד שווים כאשר השיטה compareTo () שלהם מחזירה אפס?

וִידֵאוֹ: האם שני אובייקטים יהיו תמיד שווים כאשר השיטה compareTo () שלהם מחזירה אפס?
וִידֵאוֹ: Cracking the Quantum Code: Physicist Exposes Reality 2024, נוֹבֶמבֶּר
Anonim

זה הוא המליץ על כך בהשוואה ל רק החזרות 0, אם שיחה ל שווים עַל אותם חפצים היה לַחֲזוֹר נכון: בהשוואה ל (e2) == 0 יש אותו דבר ערך בוליאני כ-e1. שווים (e2) עבור כל e1 ו-e2 של מחלקה C. שימו לב כי null הוא לא מופע של אף מחלקה, וה.

יתר על כן, האם זה אפשרי עבור שווים () להחזיר false גם אם התוכן של שני אובייקטים זהה?

4 תשובות. ב-java השיטה public boolean שווים ( לְהִתְנַגֵד obj) עובר בירושה מה- לְהִתְנַגֵד . עם זאת, יישום השיטה כפי שהוגדר ב- לְהִתְנַגֵד הכיתה היא שה שווים השיטה תהיה להחזיר אם ורק אם ה שני חפצים בהשוואה הם אותו למשל.

לאחר מכן, השאלה היא מדוע compareTo () צריכה להיות עקבית לשיטת equals () ב-Java? הסיבה לכך היא שממשק המפה מוגדר במונחים של שווים פעולה, אבל מפה מבצעת את כל ההשוואות העיקריות באמצעותה בהשוואה ל (או השוו) שיטה , אז שני מפתחות שנחשבים שווה לפי זה שיטה הם, מנקודת המבט של המפה הממוינת, שווה.

בהתחשב בכך, מה ההבדל בין == שווה () לשיטת compareTo ()?

בהשוואה ל : משווה בין שתי מחרוזות מבחינה לקסיקוגרפית. שווים : משווה מחרוזת זו לאובייקט שצוין. בהשוואה ל משווה שתי מחרוזות לפי התווים שלהן (באותו אינדקס) ומחזיר מספר שלם (חיובי או שלילי) בהתאם. שווים() בודק אם שני אובייקטים זהים או לא ומחזיר ערך בוליאני.

האם נוכל לעקוף את שיטת compareTo?

ביטול compareTo Method זה אמור להחזיר מספר שלם שלילי (בדרך כלל -1), אם האובייקט המפעיל הנוכחי קטן מהעבר אחד , ומספר שלם חיובי (בדרך כלל +1) אם הוא גדול מ, ו-0 אם שווה. השווה לשיטת should זורק חריג אם לאובייקט שעבר יש סוג לא תואם או null.

מוּמלָץ: