ما هو مفهوم String Pool in java؟

String Pool in Java عبارة عن مجموعة من السلاسل المخزنة في Java Heap Memory. سيساعدك هذا البرنامج التعليمي في اتباع نهج مفصل لـ Java String Pool مع أمثلة.

هل سمعت عن المصطلح 'تجمع السلاسل في جافا؟' حسنًا ، إذا كانت الإجابة لا ، فقد هبطت في المكان الصحيح. String Pool in Java عبارة عن مجموعة من السلاسل النصية يتم تخزينها في ملفات ذاكرة الكومة. دعونا نحفر أعمق قليلاً ونفهم هذا المفهوم الخاص بتجمع Java String بالتفصيل.

ستتم مناقشة المؤشرات التالية في هذه المقالة:





هيا نبدأ!

بادئ ذي بدء ، دعونا نفهم بالضبط كيف يتم إنشاء كائن سلسلة!



كيفية تثبيت php 7 على نظام التشغيل windows 10

كيف تصنع سلسلة؟

لإنشاء كائن سلسلة في Java ، هناك طريقتان:

  • باستخدام عامل التشغيل الجديد. فمثلا،
String s1 = سلسلة جديدة ('Joey')
  • استخدام تعبير سلسلة حرفية أو ثابت. فمثلا،
String s1 = 'Joey' (سلسلة حرفية) أو String s1 = 'Joe' + 'y' (تعبير ثابت للسلسلة)

الآن ، ما هي مجموعة String التي أتحدث عنها وكيف يتم إنشاء سلسلة في Java مرتبطة بهذا. اسمحوا لي أن أخفض الفوضى!

ما هو String Pool في Java؟

String Pool هي منطقة تخزين في Java heap.



تخصيص السلسلة ، مثل كل شيء تخصيص الكائن ، يثبت أنه أمر مكلف في كل من حالتي الوقت والذاكرة. يقوم JVM بتنفيذ بعض الخطوات أثناء تهيئة السلاسل الحرفية لزيادة الأداء وتقليل حمل الذاكرة. لتقليل عدد كائنات السلسلة التي تم إنشاؤها في JVM ، تحتفظ فئة String بمجموعة من السلاسل.

في كل مرة يتم فيها إنشاء سلسلة حرفية ، يتم إنشاء ملف JVM يتحقق من التجمع الحرفي للسلسلة أولاً. إذا كانت السلسلة موجودة بالفعل في تجمع السلاسل ، يتم إرجاع مرجع إلى المثيل المجمع. إذا لم تكن السلسلة موجودة في التجمع ، فسيتم تهيئة كائن String جديد ووضعه في التجمع.

بعد تعلم المفهوم نظريًا ، دعني أخبرك كيف يعمل مجمع String في Java خطوة بخطوة بمساعدة حالات بسيطة!

كيف يعمل String pool في Java؟

عند إنشاء سلسلة جديدة مثل هذا:

String s1 = 'Rachel'

يقوم JVM تلقائيًا بالتحقق مما إذا كانت نفس القيمة موجودة في مجموعة ثابتة السلسلة أم لا.

  • إذا كانت الإجابة بنعم ، فإنها تحتل القيمة الموجودة بالفعل.
  • إذا لم يكن الأمر كذلك ، فإنه ينشئ سلسلة جديدة من تلقاء نفسه ويضيفها إلى تجمع السلاسل.

إذا كنت ترغب في إيقاف هذا السلوك ، فأنشئ سلسلة باستخدام عامل تشغيل جديد:

String s1 = سلسلة جديدة ('Rachel')

الآن ، إذا كنت ترغب في إضافة هذه السلسلة إلى ملف ، توفر لك Java طريقة تسمى ، طريقة intern () ، يمكنك استدعاء طريقة intern () الأصلي مثل هذا:

S1.intern ()

الآن ، سوف أريكم تنفيذ وعمل تجمع السلاسل من خلال مثال.

ما هي لغة البرمجة ساس

لكن قبل ذلك ، تذكير قصير!

كما تعلم ، إذا كنت تقارن كائنين باستخدام عامل التشغيل == ، فإنه يقارن العناوين الموجودة في الذاكرة.

لذلك سنقارن السلاسل باستخدام == للتأكد تمامًا من أنها نفس الكائن أم لا.

الآن ، دعنا ننتقل إلى عملية التنفيذ.

تجمع السلاسل في Java: مخطط التدفق

سلسلة تجمع - Edureka

الآن دعونا نفهم ما يحدث هنا خطوة بخطوة:

  • يتم تحميل الفصل عندما تم استدعاؤه.
  • يبحث JVM عن جميع السلاسل الحرفية في البرنامج
  • أولاً ، يجد المتغير s1 الذي يشير إلى 'Apple' الحرفي ويتم إنشاؤه في الذاكرة
  • يتم بعد ذلك وضع مرجع لـ 'Apple' في ذاكرة التجمع الثابت للسلسلة.
  • ثم تجد متغيرًا آخر s2 يشير إلى نفس السلسلة الحرفية 'Mango'.
  • ثم يعثر على متغير آخر s3 يشير إلى المتغير الحرفي 'Apple'
  • الآن وقد وجد JVM بالفعل سلسلة حرفية 'Apple' ، فإن كلا المتغيرين s1 و s3 سيشيران إلى نفس الكائن ، أي 'Apple'.

برنامج Java لـ String Pool

فئة عامة StringPoolExperiment {public static void main (String [] args) {String s1 = 'Rachel' String s2 = 'Rachel' String s3 = new String ('Rachel') String s4 = سلسلة جديدة ('Rachel'). متدرب ( ) System.out.println (s1 == s2) // true System.out.println (s1 == s3) // false System.out.println (s1 == s4) // true}}

انتاج:

صحيح
خاطئة
صحيح

في المثال أعلاه ، يمكنك أن ترى بوضوح استخدام تهيئة السلسلة بجميع الطرق الثلاث ، أي

String s1 = 'Rachel' String s2 = 'Rachel' String s3 = سلسلة جديدة ('Rachel') String s4 = سلسلة جديدة ('Rachel'). متدرب ()

ربما يجب أن يكون العمل الداخلي للبرنامج واضحًا الآن.

مع هذا ، وصلت إلى نهاية مدونتي. آمل أن تكون المحتويات الموضحة هنا قد ساعدتك في توسيع قاعدة معارفك. سوف نستمر في الغوص في عالم جافا. ترقب!

تفحص ال من Edureka ، شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250.000 متعلم راضٍ منتشرين في جميع أنحاء العالم تم تصميم دورة تدريب وشهادة Java J2EE و SOA من Edureka للطلاب والمهنيين الذين يرغبون في أن يصبحوا مطوري Java. تم تصميم الدورة التدريبية لمنحك السبق في برمجة Java وتدريبك على مفاهيم Java الأساسية والمتقدمة جنبًا إلى جنب مع العديد من أطر Java مثل Hibernate & ربيع .

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات في مدونة 'String Pool in Java' وسنعاود الاتصال بك في أقرب وقت ممكن.