كائنات السلسلة غير قابلة للتغيير. في كل مرة تستخدم فيها إحدى الطرق في فئة System.String ، تحتاج إلى إنشاء كائن سلسلة جديد في الذاكرة ، والذي يتطلب تخصيص مساحة جديدة للكائن الجديد. يمكن أن يكون النظام العلوي المرتبط بإنشاء كائن سلسلة جديد مكلفًا للغاية في المواقف التي يلزم إجراء التعديلات المتكررة على السلسلة. إذا كنت ترغب في تعديل سلسلة دون إنشاء كائن جديد ، فيمكنك استخدام فئة System.Text.StringBuilder. على سبيل المثال ، يمكن أن يؤدي استخدام فئة StringBuilder إلى تحسين الأداء عند تسلسل العديد من الأوتار معًا في حلقة.
من خلال تهيئة المتغير باستخدام طريقة مُنشئ الزائد ، يمكن إنشاء مثيل جديد لفئة StringBuilder ، كما هو موضح في المثال التالي.
StringBuilder MyStringBuilder = New StringBuilder ("Hello World!") ؛(ط) حدد السعة والطول
على الرغم من أن كائن StringBuilder هو كائن ديناميكي يسمح لعدد الأحرف في السلسلة التي يتغلفها ، يمكنك تحديد قيمة لأقصى عدد من الأحرف التي يمكن أن تحملها. تسمى هذه القيمة سعة الكائن ويجب عدم الخلط بينها مع طول السلسلة الذي يحمله كائن StringBuilder الحالي. على سبيل المثال ، يمكنك إنشاء مثيل جديد لفئة StringBuilder مع السلسلة "Hello" (الطول 5) ، مع تحديد أن الحد الأقصى لسعة الكائن هو 25. عندما يتم تعديل StringBuilder ، فإنه لا يعيد تخصيص المساحة لنفسه حتى يتم الوصول إلى السعة. عند الوصول إلى السعة ، سيتم تخصيص مساحة جديدة تلقائيًا وسيتم مضاعفة السعة. يمكنك استخدام أحد المُنشئين المحملين لتحديد سعة فئة StringBuilder. يحدد مثال الكود التالي أنه يمكن توسيع كائن MyStringBuilder إلى 25 فراغًا كحد أقصى.
StringBuilderMyStringBuilder = new StringBuilder ("Hello World!" ، 25) ؛ بالإضافة إلى ذلك ، يمكن تعيين الحد الأقصى لطول الكائن باستخدام خاصية سعة القراءة/الكتابة. يستخدم مثال الكود التالي خاصية السعة لتحديد الحد الأقصى لطول الكائن.
MyStringBuilder.Capacity = 25 ؛
(2) القائمة التالية يسرد عدة طرق شائعة لهذا النوع:
(1) يمكن استخدام طريقة الإلحاق لإضافة تمثيل سلسلة لنص أو كائن إلى نهاية سلسلة يمثلها كائن StringBuilder الحالي. يهيئ المثال التالي كائن StringBuilder إلى "Hello World" ثم يلحق بعض النص إلى نهاية الكائن. سيتم تخصيص المساحة تلقائيًا حسب الحاجة.
StringBuilderMyStringBuilder = جديد StringBuilder ("Hello World!") ؛ MyStringBuilder.append ("يا له من يوم جميل.") ؛ console.writeline (MyStringBuilder) ؛يعرض هذا المثال Hello World! يا له من يوم رائع. إلى وحدة التحكم.
(2) تضيف طريقة AppendFormat نصًا إلى نهاية StringBuilder وينفذ واجهة Iformattable ، بحيث يمكنها قبول سلاسل التنسيق القياسية الموضحة في قسم التنسيق. يمكنك استخدام هذه الطريقة لتخصيص تنسيق المتغير وإلحاق هذه القيم إلى الجزء الخلفي من StringBuilder. يستخدم المثال التالي طريقة AppendFormat لوضع تعيين قيمة عدد صحيح لتنسيق قيمة العملة إلى نهاية StringBuilder.
int myint = 25 ؛ StringBuilder myStringBuilder = new StringBuilder ("إجماليك هو") ؛ mystringBuilder.appendformat ("{0: c}" ، myint) ؛ console.writeline (mystringBuilder) ؛يعرض هذا المثال إجماليك 25.00 دولارًا إلى وحدة التحكم.
(3) تضيف طريقة إدراج سلسلة أو كائن إلى الموضع المحدد في StringBuilder الحالي. يستخدم المثال التالي هذه الطريقة لإدراج كلمة في الموضع السادس من StringBuilder.
StringBuilderMyStringBuilder = new StringBuilder ("Hello World!") ؛ MyStringBuilder.insert (6 ، "جميلة") ؛ console.writeline (MyStringBuilder) ؛هذا المثال يعرض Hello BeautifulWorld! إلى وحدة التحكم.
(4) يمكنك استخدام طريقة إزالة لإزالة عدد محدد من الأحرف من StringBuilder الحالي ، وتبدأ عملية الإزالة من الفهرس المحدد من الصفر. يستخدم المثال التالي طريقة إزالة لتقصير StringBuilder.
StringBuilderMyStringBuilder = جديد StringBuilder ("Hello World!") ؛ MyStringBuilder.Remove (5،7) ؛ console.writeline (MyStringBuilder) ؛يعرض هذا المثال مرحبًا بوحدة التحكم.
(5) باستخدام طريقة استبدال ، يمكنك استبدال الأحرف في كائن StringBuilder مع حرف محدد آخر. يستخدم المثال التالي طريقة استبدال للبحث عن كائنات StringBuilder ، والعثور على جميع شخصيات علامة التعجب (!) ، واستبدالها بأحرف علامة استفهام (؟).
StringBuilderMyStringBuilder = جديد StringBuilder ("Hello World!") ؛ MyStringBuilder.replace ('!' ، '؟') ؛ console.writeline (mystringBuilder) ؛هذا المثال يعرض Hello World؟ إلى وحدة التحكم
getSqlMapClientTemplate (). QueryForList ((New StringBuilder ()). append (entityclass.getName ()). إلحاق (". حدد"). toString () ، null) ؛فئة java's StringBuilder
إذا كان لدى البرنامج حاجة متكررة لسلاسل إضافية ، فلا يوصى باستخدام + لتسلسل السلاسل. يمكنك التفكير في استخدام فئة java.lang.stringBuilder. سيكون للكائنات التي تم إنشاؤها باستخدام هذه الفئة 16 حرفًا بشكل افتراضي. يمكنك أيضًا تحديد الطول الأولي بنفسك. إذا تجاوزت الأحرف المرفقة الطول القابل للاستيعاب ، يزيد كائن StringBuilder تلقائيًا من الطول لاستيعاب الأحرف المرفقة. إذا كانت هناك حاجة إلى إرفاق السلاسل بشكل متكرر ، فإن استخدام فئة StringBuilder يمكن أن يحسن الكفاءة بشكل كبير. الرمز التالي:
كود جافا
الفئة العامة appendstringTest {public static void main (string [] args) {string text = "" ؛ long begintime = system.currentTimeMillis () ؛ لـ (int i = 0 ؛ i <10000 ؛ i ++) text = text+i ؛ endtime long = system.currentTimeMillis () ؛ System.out.println ("وقت التنفيذ:" +(Endtime-begintime)) ؛ StringBuilder sb = new StringBuilder ("") ؛ begintime = system.currentTimeMillis () ؛ لـ (int i = 0 ؛ i <10000 ؛ i ++) sb.append (string.valueof (i)) ؛ endtime = system.currentTimeMillis () ؛ System.out.println ("وقت التنفيذ:" +(Endtime-begintime)) ؛ }} الفئة العامة appendStringTest {public static void main (string [] args) {string text = "" ؛ long begintime = system.currentTimeMillis () ؛ لـ (int i = 0 ؛ i <10000 ؛ i ++) text = text+i ؛ endtime long = system.currentTimeMillis () ؛ System.out.println ("وقت التنفيذ:"+(Endtime-begintime)) ؛ StringBuilder sb = new StringBuilder ("") ؛ begintime = system.currentTimeMillis () ؛ لـ (int i = 0 ؛ i <10000 ؛ i ++) sb.append (string.valueof (i)) ؛ endtime = system.currentTimeMillis () ؛ System.out.println ("وقت التنفيذ:"+(Endtime-begintime)) ؛ }}مخرجات هذا الرمز:
وقت التنفيذ: 3188
وقت التنفيذ: 15
StringBuilder هو فئة جديدة تمت إضافتها فقط إلى J2Se1.5.0. إذا كان للنسخة السابقة نفس المتطلبات ، فسيتم استخدام java.util.stringbuffer. في الواقع ، تم تصميم StringBuilder للحصول على نفس واجهة التشغيل مثل StringBuffer. سيكون باستخدام StringBuilder في موقف غير مستقل غير متخلف كفاءة أفضل لأن StringBuilder لا يتعامل مع مشكلات التزامن. سوف StringBuffer التعامل مع مشاكل التزامن. إذا تم تشغيل StringBuilder ضمن مؤشرات ترابط متعددة ، فيجب عليك استخدام StringBuffer بدلاً من ذلك للسماح للكائن بإدارة مشاكل التزامن في حد ذاته.
التحليل الموجز أعلاه لاستخدام StringBuilder في Java هو كل المحتوى الذي أشاركه معك. آمل أن يعطيك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.