يمكن كتابة متغير من النوع String كالتالي
String name = "ahmed";
ويمكن كتابته بطريقة إنشاء كائن جديد كالتالي
String name = new String ("ahmed");
ما الفرق بين الطريقتين ؟
في الحالة الاولى يتم وضعه في pool واعادة استخدامه
مثلاً
String s1 = "Arabia"
String s2 = "Arabia"
كلا المتغيران يشيران الى نفس الكائن.
في الحالة الثانية يتم انشاء كائن جديد في كل مرة.
في الحالة الاولى يتم وضعه في pool واعادة استخدامه
حاولت البحث عن معنى pool وما فهمته أنه مسار من مسارات تنفيذ العمليات وما بداخل هذا المسار لا يتم تنفيذه في نفس الوقت بل يتم تنفيذ مهمة وراء مهمة
كلا المتغيران يشيران الى نفس الكائن.
في الحالة الثانية يتم انشاء كائن جديد في كل مرة.
لكن حسب معلوماتي أن String كلاس في اللغة وبالتالي في كل مرة نقوم بتعريف متغير جديد نقوم بإنشاء كائن جديد من String أي أنه في كلا الحالتين يتم إنشاء كائن. أم تقصد أن الطريقة الثانية تكون مؤقتة ويتم حذف الكائن بعد استخدامه مثلا ؟
حاولت البحث عن معنى pool وما فهمته أنه مسار من مسارات تنفيذ العمليات
ابحث عن java String pool, في حالتنا هو عبارة عن مستودع توضع فيه ال object بانتظار استخدمها.
لكن حسب معلوماتي أن String كلاس في اللغة وبالتالي في كل مرة نقوم بتعريف متغير جديد نقوم بإنشاء كائن جديد من String أي أنه > كلا الحالتين يتم إنشاء كائن. أم تقصد أن الطريقة الثانية تكون مؤقتة ويتم حذف الكائن بعد استخدامه مثلا ؟
ليس دائماً ننشئ كائن جديد, خصوصاً في الامور التي تحتاج سرعة, هناك مثلاً Database connection pool اي ان ال Object موجود وينتظر ان يتم استخدامه, وبعد الانتهاء منه يعود الى ال pool.
وهنا استخدام ال String بلطريقة الاولى ينشئ الكائن مرة واحدة فقط, ويوضع في ال pool لكل من يستخدمه بعد ذلك, اما الطريقة الثانية فيحذف في حال لم يعد هناك شيئ يشير اليه.
لا أعتقد ﻷني قمت بكتابة شرط يتحقق ما إذا كان الاثنين متساويين أم لا ولم يتحقق بالرغم أني وضعت لهم نفس القيم. شاهد الكود
String text1 = "text";
String text2 = new String("text");
if (text1 == text2)
System.out.println("True");
else
System.out.println("False");
لكن عند كتابة نفس الكود بدون الطريقة الثانية يتحقق الشرط
String text1 = "text";
String text2 = "text";
if (text1 == text2)
System.out.println("True");
else
System.out.println("False");
التعليقات