1. السلسلة == والمتساوية ()
في حكم المساواة للسلاسل، == يحكم على ما إذا كانت العناوين متماثلة، ويحكم يساوي() على ما إذا كانت قيم الأحرف متماثلة. في معظم الأحيان تكون نتائج == وequal() هي نفسها. وذلك لأن كائن السلسلة في وضع غير قابل للتغيير. إذا لم تقم بإنشاء كائن سلسلة جديد بشكل صريح، فإن الإعداد الافتراضي لـ Java لحفظ كائن السلسلة هو وضع كائن السلسلة الذي تم إنشاؤه حديثًا في مخزن مؤقت، ثم تحديد المخزن المؤقت في كل مرة هذا الكائن موجود بالفعل، إذا كان الأمر كذلك، فإن كائن السلسلة الذي له نفس قيمة الحرف الذي تم إنشاؤه لاحقًا سيشير أيضًا إلى العنوان الذي تم فيه إنشاء كائن قيمة الحرف في الأصل. وهذا يعني أنه عندما تكون قيم الشخصية هي نفسها، فإن الجيولوجيا تكون أيضًا هي نفسها في معظم الحالات. == له نفس تأثير يساوي (). ومع ذلك، عندما يتم إنشاء الكائن بواسطة str = new String("abc") بدلاً من تعيينه مباشرة كـ str = "abc"، أو بعد معالجة بعض اتصالات السلسلة، أو يتم إنشاؤه من خلال كائنات مثل StringBuffer، سيتم فتح كائنات جديدة في الذاكرة بالنسبة للعناوين، نتائج == وequal() مختلفة في هذا الوقت.
هل الأمر معقد بعض الشيء؟ تحتاج هنا إلى بعض الفهم للذاكرة والمكدس وتخزين الكائنات. لا أريد الخوض في هذه القضية. إذا كنت لا تفهم، فقط تذكر أنه إذا كنت تريد تحديد ما إذا كانت قيم الأحرف لسلسلتين متساويتين ولا توجد متطلبات أخرى، فيرجى استخدام يساوي () بدلاً من == أما عندما تحتاج إلى الاستخدام ==، أعتقد أنه عندما تحتاج إليها، سوف تفهمها بشكل طبيعي. في الواقع، نادرًا ما نحتاج إلى استخدام == عند الحكم على السلسلة.
2. حول str.equal("abc") و"abc".equal(str)
يبدو أن هناك الكثير من الجدل حول هذا الأمر، وقد تكون كتابة الثابت الأول في النهاية متوافقة مع عادات معظم الناس وتفكيرنا المنطقي. ولكن هناك حاجة إلى حكم آخر لتحديد ما إذا كانت قيمة str فارغة أم لا. وإلا قد يحدث استثناء هنا. الطريقة الأخيرة للكتابة لا تتطلب المزيد من الحكم على ما إذا كانت لاغية. بقدر ما يتعلق الأمر بتفضيلاتي الشخصية، أفضل الطريقة الأخيرة في الكتابة.
3. حول سلسلة فارغة
/**
* اختبر الموقف عندما تكون سلسلة Java فارغة
*تاريخ الإنشاء:2009-6-3
* المؤلف : مدير
*
*/
اختبار الفراغ الثابت العامNull(){
السلسلة a= null,b = null,c="hehe";
System.out.println(a == null);
System.out.println(a+b+c);
}
نتيجة تنفيذ الطريقة:
حقيقي
nullnull haha لذا يجب على الجميع الانتباه عند القيام بعمليات دمج السلاسل، ولا تنس التحقق من وجود null، وإلا فإن النتيجة لن تكون مرضية للغاية!