ما هي المقارنة بين متساوين و ==؟
1. Boolean TEM = A == B ؛
بادئ ذي بدء ، == المقارنة هي بالتأكيد العنوان. من منظور المكدس ، أي == المقارنة هي المحتوى الموجود على المكدس. نظرًا لاستخدام المكدس لتخزين القيم الحرفية للمتغيرات التلقائية في الأنواع الأساسية الثمانية في Java (المتغيرات التلقائية هي متغيرات محددة في شكل int a = 1 ؛). إذا كانت قيمة المقارنة المتغيرة التلقائية ، فمن المؤكد أنها تستخدم لمقارنتها بـ == ، لأن متساوًا () طريقة ، لذلك يجب أن يطلق عليه كائن لاستخدامه للمقارنة. المتغيرات التلقائية ليست حالات الفئات أو مراجع الفئات ، لذلك لا يمكن استخدام طريقة متساوية ().
2.Boolean TEM = A.Equals ("B") ؛
يتم استخدام طريقة متساوية () عمومًا لمقارنة محتوى الكائن ، ولكن في بعض الحالات تقارن أيضًا عناوين كائنين.
التالي
اكتب برنامج اختبار
package com ؛ import java.util.date ؛ اختبار الطبقة العامة {public static void main (string [] args) {Integer integer1 = new integer (1) ؛ integer integer2 = عدد صحيح جديد (1) ؛ String str1 = سلسلة جديدة ("123") ؛ String str2 = سلسلة جديدة ("123") ؛ تاريخ تاريخ 1 = تاريخ جديد () ؛ تاريخ تاريخ 2 = تاريخ جديد () ؛ double1 = جديد مزدوج ("1.0") ؛ double2 = جديد مزدوج ("1.0") ؛ Boolean TEM1 = New Boolean (True) ؛ Boolean TEM2 = New Boolean (True) ؛ Object1 = new Object () ؛ Object2 = new Object () ؛ System.out.println ("---- Object -------") ؛ System.out.println (Object1.equals (Object2)) ؛ System.out.println (Object1 == Object2) ؛ System.out.println (Object1.equals (Object1)) ؛ System.out.println (Object1 == Object1) ؛ System.out.println ("-----------") ؛ System.out.println (tem1.equals (tem2)) ؛ system.out.println (tem1 == tem2) ؛ System.out.println ("--- double ---------") ؛ System.out.println (double1.equals (double2)) ؛ system.out.println (double1 == double2) ؛ System.out.println ("-------------") ؛ system.out.println (integer1.equals (integer2)) ؛ system.out.println (integer1 == Integer2) ؛ System.out.println ("------------") ؛ System.out.println (str1.equals (str2)) ؛ system.out.println (str1 == str2) ؛ System.out.println ("-----------") ؛ System.out.println ("------------") ؛ system.out.println (str1 == str2) ؛ System.out.println ("-----------") ؛ System.out.println (Date1.equals (Date2)) ؛ System.out.println (Date1 == Date2) ؛ }}نتيجة:
---هدف-----
خطأ شنيع
خطأ شنيع
حقيقي
حقيقي
--- منطقية -----
حقيقي
خطأ شنيع
---مزدوج-----
حقيقي
خطأ شنيع
---عدد صحيح-----
حقيقي
خطأ شنيع
---خيط-----
حقيقي
خطأ شنيع
---تاريخ-----
حقيقي
خطأ شنيع
أولاً ، عند مقارنتين الكائنين ، تكون نتائج == و equals () صحيحة ، وعندما يكون الكائنان مختلفان ، يتم إرجاعهما خطأ. لذلك عندما يتم استخدام == ومساواة لمقارنة الكائنات ، فإنها تقارن عنوان الكائن ، ولكن في الواقع الجوهر هو نفسه. فيما يلي رمز طريقة equals () في فئة الكائن:
منطقية عامة تساوي (كائن OBJ) {return (this == obj) ؛ }بالنسبة إلى Boolean ، Double (تعويم) ، interger (اللقطة ، طويلة) ، سلسلة ، والتاريخ ، وجدت أيضًا رموز المصدر الخاصة بهم. أدناه نشرت الرموز المصدر لطريقة متساوية () في منطقية ، مزدوجة ، interger ، السلسلة ، والتاريخ. في هذا الوقت ، تم إعادة كتابة طريقة متساوية () لأن هذه الفئات موروثة من فئة الكائن.
منطقية:
منطقية عامة تساوي (كائن OBJ) {if (obj extryof boolean) {return value == ((boolean) obj) .booleanvalue () ؛ } إرجاع خطأ ؛ }مزدوج:
منطقية عامة تساوي (كائن OBJ) {return (OBJ مثيل double) && (doubletolongbits (((double) obj) .value) == doubletolongbits (value)) ؛ }Interger:
منطقية عامة تساوي (كائن obj) {if (obj extleof integer) {return value == ((integer) obj) .intvalue () ؛ } إرجاع خطأ ؛ } خيط:
منطقية عامة تساوي (كائن anobject) {if (this == anobject) {return true ؛ } if (anobject extryof string) {String AnotherString = (string) anobject ؛ int n = value.length ؛ if (n == anotherstring.value.length) {char v1 [] = value ؛ char v2 [] = Anotherstring.value ؛ int i = 0 ؛ بينما (n--! = 0) {if (v1 [i]! = v2 [i]) return false ؛ i ++ ؛ } إعادة صواب ؛ }} إرجاع خطأ ؛ }تاريخ:
منطقية عامة تساوي (كائن obj) {return obj مثيل Date && getTime () == ((Date) obj) .getTime () ؛ }بمعنى آخر ، في هذه الأوقات ، تتم إعادة كتابة طريقة متساوية () لفئة الكائن لمقارنة المحتوى الفعلي لكائنين ولم يعد العنوان. بالطبع ، إنها بالتأكيد ليست فقط هذه. فيما يلي بعض الحالات الشائعة حيث تقوم فئات Java الأصلية بإعادة كتابة طريقة متساوية () في فئة الكائن.
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!