سلسلة سلسلة ثابتة
متغير سلسلة StringBuffer (مؤشر ترابط آمن)
متغير سلسلة StringBuilder (غير آمن غير مؤمن)
بكل بساطة ، فإن فرق الأداء الرئيسي بين نوع السلسلة ونوع StringBuffer هو في الواقع أن السلسلة هي كائن ثابت. لذلك ، في كل مرة تقوم فيها بتغيير نوع السلسلة ، فإنه يعادل في الواقع إنشاء كائن سلسلة جديد وتوجيه المؤشر إلى كائن سلسلة جديد. لذلك ، من الأفضل عدم استخدام سلسلة للسلاسل التي غالباً ما تغير المحتوى ، لأنه في كل مرة يتم فيها إنشاء الكائن ، سيكون له تأثير على أداء النظام. خاصة عندما يكون هناك الكثير من الكائنات المرجعية في الذاكرة ، ستبدأ GC في JVM العمل ، والتي ستكون بالتأكيد بطيئة للغاية.
إذا كنت تستخدم فئة StringBuffer ، فستكون النتيجة مختلفة. في كل مرة ستعمل فيها النتيجة على كائن StringBuffer نفسه ، بدلاً من إنشاء كائن جديد ثم تغيير مرجع الكائن. لذلك ، بشكل عام ، نوصي باستخدام StringBuffer ، خاصةً عندما يتم تغيير كائنات السلسلة غالبًا. في بعض الحالات الخاصة ، يتم بالفعل تفسير الربط السلسلة لكائنات السلسلة بواسطة JVM كربط كائنات StringBuffer. لذلك ، فإن سرعة كائنات السلسلة ليست أبطأ من كائنات StringBuffer في هذه الأوقات. خاصة في توليد كائنات السلسلة التالية ، تكون كفاءة السلسلة أسرع بكثير من StringBuffer:
String S1 = "هذا ليس سوى" + "بسيط" + "اختبار" ؛
StringBuffer SB = New StringBuilder ("هذه ليست سوى"). إلحاق ("بسيط"). إلحاق ("اختبار") ؛
سوف تفاجأ عندما تجد أن سرعة توليد كائنات S1 S1 هي ببساطة سريعة للغاية ، وفي هذا الوقت ، لا تتمتع StringBuffer بأي ميزة في السرعة. في الواقع ، هذه خدعة من JVM. في عيون JVM ، هذا
String S1 = "هذا ليس سوى" + "بسيط" + "اختبار" ؛ في الواقع هو:
السلسلة S1 = "هذا مجرد اختبار بسيط" ؛ بالطبع لا يستغرق الكثير من الوقت. ولكن ما يجب أن تلاحظه هنا هو أنه إذا جاءت سلسلة أخرى
بالنسبة لكائنات السلسلة ، فإن السرعة ليست بهذه السرعة ، على سبيل المثال:
السلسلة S2 = "هذا هو فقط" ؛
السلسلة S3 = "Simple" ؛
سلسلة S4 = "اختبار" ؛
السلسلة S1 = S2 + S3 + S4 ؛
في هذا الوقت ، ستقوم JVM بذلك بطريقة منتظمة بالطريقة الأصلية
في معظم الحالات سلسلة stringbuffer>
StringBuffer
Java.lang.StringBuffer Safe-Safe Sequence Formence. مخزن مؤقت لسلسلة تشبه السلسلة ، ولكن لا يمكن تعديله. على الرغم من أنه يحتوي على سلسلة معينة من الأحرف في أي وقت من الأوقات ، إلا أن طول ومحتوى التسلسل يمكن تغييره من خلال بعض مكالمات الطريقة.
يمكن استخدام المخازن المؤقتة السلسلة بأمان لخيوط متعددة. يمكن مزامنة هذه الطرق عند الضرورة ، لذلك يبدو أن جميع العمليات على أي مثيل معين تحدث بترتيب متسلسل يتوافق مع ترتيب مكالمات الطريقة التي يقوم بها كل مؤشر ترابط.
العمليات الرئيسية على StringBuffer هي طرق الإلحاق والإدراج ، والتي يمكن أن تكون مثقلة لقبول أي نوع من البيانات. يمكن لكل طريقة تحويل البيانات المحددة بشكل فعال إلى سلسلة ، ثم إلحاق أو إدراج أحرف تلك السلسلة في المخزن المؤقت للسلسلة. تضيف طريقة إلحاق هذه الأحرف دائمًا إلى نهاية المخزن المؤقت ؛ تضيف طريقة إدراج الأحرف في النقطة المحددة.
على سبيل المثال ، إذا كانت Z تشير إلى كائن مخزن مؤقت للسلسلة ، فإن المحتوى الحالي "START" ، فإن هذه الطريقة استدعاء Z.Append ("LE") تجعل المخزن المؤقت للسلسلة يحتوي على "Stridle" ، و Z.Insert (4 ، "LE") يغير المخزن المؤقت للسلسلة لاحتواء "Starlet".
في معظم الحالات stringBuilder> StringBuffer
java.lang.stringbuilde
Java.lang.StringBuilder تسلسل حرف متغير جديد في 5.0. يوفر هذا الفئة واجهة برمجة تطبيقات متوافقة مع StringBuffer ، ولكن ليس مضمونًا للمزامنة. تم تصميم هذه الفئة لتكون بديلاً بسيطًا لـ StringBuffer ، عند استخدام المخازن المؤقتة للسلسلة بواسطة مؤشر ترابط واحد (هذا أمر شائع). إذا كان ذلك ممكنًا ، فمن المستحسن أخذ هذه الفئة أولاً ، لأنها أسرع من StringBuffer في معظم التطبيقات. أساليب كليهما هي نفسها بشكل أساسي.
ما سبق هو مجموعة من المعلومات الموجودة على سلسلة Java و StringBuffer و StringBuilder. سنستمر في إضافة المعلومات ذات الصلة في المستقبل. شكرا لدعمكم لهذا الموقع!