قيمة السلسلة غير قابلة للتغيير.
فئة StringBuffer هي نفس فئة السلسلة ، وتستخدم أيضًا لتمثيل السلاسل. استخدام الذاكرة.
يخصص StringBuffer عازلة ذات 16 بايت بشكل افتراضي.
StringBuffer ليس مثل السلسلة.
StringBuffer Str1 = New StringBuffer () من 16 بايت من الطول محفوظة خلف StringBuffer Str3 = New StringBuffer (www.weixueyuan.net) ؛
الطرق الرئيسية لفئة StringBuffer
تركز الطرق في فئة StringBuffer بشكل أساسي على تشغيل السلاسل ، مثل الإلحاق والإدراج والحذف ، وهو أيضًا الفرق الرئيسي بين فئة StringBuffer وفئة السلسلة. في التطوير الفعلي ، إذا كنت بحاجة إلى إجراء تعديلات متكررة لسلسلة ، فمن المستحسن استخدام StringBuffer.
1) الطريقة () طريقة
يتم استخدام طريقة Append () لإلحاق المحتوى إلى نهاية السلسلة الحالية ، على غرار سلسلة سلسلة. بعد استدعاء هذه الطريقة ، يتغير محتوى كائن StringBuffer أيضًا ، على سبيل المثال:
StringBuffer str = new StringBuffer ("Biancheng100") ؛ str.append (true) ؛
ثم ستصبح قيمة الكائن STR "Biancheng100true". لاحظ أن المحتوى الذي أشار إليه STR قد تغير ، وليس الإشارة إلى STR قد تغير.
تتمثل عملية "+" للسلسلة في الواقع في إنشاء كائن StringBuffer أولاً ، ثم استدعاء طريقة Append () لتقسيم شظايا السلسلة ، وأخيراً استدعاء طريقة ToString () لتحويلها إلى سلسلة.
وبهذه الطريقة ، يكون لاتصال السلسلة عمليات إضافية أكثر من StringBuffer ، وسيتم تقليل الكفاءة حتماً.
ومع ذلك ، بالنسبة للسلاسل الأصغر ، تكون عملية "+" أكثر سهولة وقابلة للقراءة ، وأحيانًا يمكنك التضحية بالكفاءة قليلاً.
2) DELETECHARAT ()
يتم استخدام طريقة deletecharat () لحذف الأحرف في الموضع المحدد ولتشكيل سلسلة جديدة من الأحرف المتبقية. على سبيل المثال:
StringBuffer str = new StringBuffer ("ABCDEF") ؛ str.
سيحذف هذا الرمز الحرف بقيمة فهرس 3 ، أي حرف "D".
يمكنك أيضًا حذف أحرف متعددة مرة واحدة من خلال طريقة DELETE () ، على سبيل المثال:
StringBuffer str = new StringBuffer ("ABCDEF") ؛ str.delete (1 ، 4) ؛
سيحذف هذا الرمز الأحرف بقيم الفهرس بين 1 و 4 ، بما في ذلك قيمة الفهرس 1 ، ولكن ليس 4.
3) إدراج () طريقة
يتم استخدام insert () لإدراج سلسلة في موقع محدد ويمكن اعتباره نسخة ترقية من Append (). على سبيل المثال:
StringBuffer str = new StringBuffer ("ABCDEF") ؛ str.insert (3 ، "xyz") ؛
السلسلة التي أشار إليها STR هي abcdxyzef.
4) طريقة setcharat ()
يتم استخدام طريقة setcharat () لتعديل الأحرف في الموضع المحدد. على سبيل المثال:
StringBuffer str = new StringBuffer ("ABCDEF") ؛ str.setcharat (3 ، 'Z') ؛
سيقوم هذا الرمز بتعديل الحرف بقيمة فهرس من 3 إلى Z ، وتشير السلسلة إلى STR هي ABCZEF.
ما سبق هو مجرد شرح بسيط لبعض الطرق الشائعة الاستخدام.
مقارنة الكفاءة بين السلسلة و stringbuffer
لمعرفة بشكل أكثر وضوحًا كفاءة التنفيذ الخاصة بهم ، يضيف الرمز التالي 26 رسالة إنجليزية 10000 مرة.
الفئة العامة {public static void main (] args) (int i = 0 ؛ i <Times ؛ i ++) {str1 += fragment ؛ // بواسطة stringbuffer الطابع الزمني = system.currentTimEmillis () ؛ () ؛ نتائج التشغيل:
السلسلة: 5287MSStringBuffer: 3 مللي ثانية
الاستنتاج واضح ، فإن كفاءة تنفيذ StringBuffer هي آلاف المرات أسرع من السلسلة.
السلسلة: 35923MSStringBuffer: 8 مللي ثانية
لذلك ، يوصى بشدة باستخدام StringBuffer عندما يتضمن الكثير من عمليات السلسلة.
فئة StringBuilder
تتشابه وظائف فئة StringBuilder وفئة StringBuffer ، والطرق متشابهة. تكون أسرع قليلا.
يتم تطبيق واجهة charsequence في StringBuffer و StringBuilder و String.
charsevenence هي واجهة تحدد عمليات السلسلة.
تختلف عملية تنفيذ واجهة charsequence لـ StringBuffer و StringBuilder و String ، كما هو موضح في الشكل أدناه:
يمكن ملاحظة أن السلسلة تنفذ مباشرة واجهة charseprence ؛
لخص
سلامة الموضوع:
StringBuffer: مؤشر ترابط آمن
StringBuilder: المواضيع غير آمنة
سرعة:
بشكل عام ، فإن السرعة من Fast إلى Slow هي StringBuilder> StringBuffer> String ، بالطبع هذا نسبي ، وليس مطلقًا.
بيئة الاستخدام:
استخدم سلسلة لتشغيل كمية صغيرة من البيانات ؛
استخدم StringBuilder لتشغيل كميات كبيرة من البيانات في مؤشر ترابط واحد ؛
تستخدم عملية القراءة المتعددة لكميات كبيرة من البيانات StringBuffer.