قارن بين سلسلتين في جافا - يساوي () ويساوي-IgnoreCase ()
أول ما يتبادر إلى الذهن هو إجراء مقارنة مع "==" لكن هذا خطأ تماما. عندما بدأت البرمجة باستخدام Java ، قارنت سلسلتين ب "==" التي تختبر المساواة بين الكائنات ولكن ليس بين سلسلتين حرفين. على عكس C ++ ، أنشأ مصممو Java طرقا في فئة String لتبسيط اللغة نظرا لأنها موجهة للكائنات.مقارنة السلسلة مع طريقة equals< / h2 >< div >تختبر طريقة equals () الخاصة ب class String< / b> للقيم في java< / u> أو المحتويات المتغيرة وترجع <نمط span =" اللون: #38761d;" >true إذا كانت كلتا السلسلتين تحتويان على نفس الأحرف. إليك مثال: < / div>
< / div> String s1 = "str" ؛
سلسلة s2 = "str" ؛
if (s1.equals (s2))
System.out.println ("كلتا السلسلتين متساوي") ؛
< / pre>equals () حساس لحالة الأحرف (أحرف صغيرة أو كبيرة):
< pre class = "prettyprint lang-java" > String s1 = "str" ؛
سلسلة s2 = "STR" ؛
if (s1.equals (s2))
System.out.println ("كلتا السلسلتين متساوي") ؛
في هذه الحالة، فإنه يرجع false.
تجاهل الأحرف الكبيرة مع equalsIgnoreCase()
تتجنب طريقة equalsIgnoreCase() تمرير سلسلة من الأحرف الصغيرة إلى الأحرف الكبيرة ومقابل ذلك وتقارنها بيساوي () ، تقدم Java طريقة equalsIgnoreCase() التي تحول الأحرف إلى أحرف صغيرة وتقارن السلسلتين.
< br / >< / div> String s1 = "str" ؛
سلسلة s2 = "STR" ؛
if(s1.equalsIgnoreCase(s2))
System.out.println("الحساسية للحالة التي تم تجاهلها. السلسلتان متساويتان")؛ < / pre> مقارنة الحجم< / h2 >< / div>تحتوي فئة السلسلة على طريقة length () التي ترجع طول السلسلة:
< / div>if ("string1" .length () == "string2" .length ())
System.out.println ("string1 و string2 متساويان في الحجم") ؛
else if ("string1".length ()>" string2 ".length ()))
System.out.println ("string1 أطول") ؛
else
System.out.println ("string2 أطول") ؛ < / pre>< / div> ما الفرق بين يساوي و "=="< / h2>< / div>اختبارات طريقة equals() للمساواة في القيم.
new String("test").equals(new String("test"));//--> true
يختبر عامل التشغيل "==" المساواة بين الكائنات ، وإليك سلسلة من الأخطاء التي يجب تجنبها:
< pre class = "prettyprint lang-java" > String s1 = "trial" ؛
السلسلة s2 = "محاكمة" ؛
/ / هم نفس الكائن
s1 == s2 ؛ --> false
//أنها ليست نفس الكائن
s1 == "اختبار"; --> false
// يشيرون إلى نفس الكائن
"test" == "test" ؛ --> صحيح < br / >< br / > / / يعتبر التسلسل ككائن واحد < br / > "اختبار" == "الخاص بك" + "t" ؛ --> True
//طريقة substring() ينشئ كائنا جديدا
"test" == "1test".substring(1); --> false
//طريقة replace() يولد كائنا جديدا
"test" == "Test".replace("T"، "t"); --> false
ترجع السلسلة true لأنه يتم استدعاؤها أثناء التحويل البرمجي ، على عكس substring() و replace() التي يتم استدعاؤها في وقت التشغيل وسيتم إنشاء كائن جديد لا يساوي الجانب الآخر من المعادلة.
< / div>
String s1 = "str" ؛في هذه الحالة، فإنه يرجع false.
سلسلة s2 = "str" ؛
if (s1.equals (s2))
System.out.println ("كلتا السلسلتين متساوي") ؛
< / pre>equals () حساس لحالة الأحرف (أحرف صغيرة أو كبيرة):
< pre class = "prettyprint lang-java" > String s1 = "str" ؛
سلسلة s2 = "STR" ؛
if (s1.equals (s2))
System.out.println ("كلتا السلسلتين متساوي") ؛
تجاهل الأحرف الكبيرة مع equalsIgnoreCase()
تتجنب طريقة equalsIgnoreCase() تمرير سلسلة من الأحرف الصغيرة إلى الأحرف الكبيرة ومقابل ذلك وتقارنها بيساوي () ، تقدم Java طريقة equalsIgnoreCase() التي تحول الأحرف إلى أحرف صغيرة وتقارن السلسلتين.
< br / >< / div>
< br / >< / div>
String s1 = "str" ؛
سلسلة s2 = "STR" ؛
if(s1.equalsIgnoreCase(s2))
System.out.println("الحساسية للحالة التي تم تجاهلها. السلسلتان متساويتان")؛ < / pre>مقارنة الحجم< / h2 >< / div>
تحتوي فئة السلسلة على طريقة length () التي ترجع طول السلسلة:
< / div>if ("string1" .length () == "string2" .length ())
System.out.println ("string1 و string2 متساويان في الحجم") ؛
else if ("string1".length ()>" string2 ".length ()))
System.out.println ("string1 أطول") ؛
else
System.out.println ("string2 أطول") ؛ < / pre>< / div>ما الفرق بين يساوي و "=="< / h2>< / div>
اختبارات طريقة equals() للمساواة في القيم.new String("test").equals(new String("test"));//--> trueيختبر عامل التشغيل "==" المساواة بين الكائنات ، وإليك سلسلة من الأخطاء التي يجب تجنبها:
< pre class = "prettyprint lang-java" > String s1 = "trial" ؛
السلسلة s2 = "محاكمة" ؛
/ / هم نفس الكائن
s1 == s2 ؛ --> false
//أنها ليست نفس الكائن
s1 == "اختبار"; --> false
// يشيرون إلى نفس الكائن
"test" == "test" ؛ --> صحيح < br / >< br / > / / يعتبر التسلسل ككائن واحد < br / > "اختبار" == "الخاص بك" + "t" ؛ --> True
//طريقة substring() ينشئ كائنا جديدا
"test" == "1test".substring(1); --> false
//طريقة replace() يولد كائنا جديدا
"test" == "Test".replace("T"، "t"); --> false
ترجع السلسلة true لأنه يتم استدعاؤها أثناء التحويل البرمجي ، على عكس substring() و replace() التي يتم استدعاؤها في وقت التشغيل وسيتم إنشاء كائن جديد لا يساوي الجانب الآخر من المعادلة.