عند تعديل السلاسل، تحتاج إلى استخدام فئات StringBuffer وStringBuilder.
على عكس فئة السلسلة، يمكن تعديل كائنات فئات StringBuffer وStringBuilder عدة مرات دون إنشاء كائنات جديدة غير مستخدمة.
تم اقتراح فئة StringBuilder في Java 5. والفرق الأكبر بينها وبين StringBuffer هو أن StringBuilder الطريقة ليست آمنة لمؤشر الترابط (يعني أمان الخيط أنه عند الوصول إلى سلاسل رسائل متعددة، يتم استخدام آلية القفل. عندما يصل مؤشر ترابط إلى بيانات معينة من هذه الفئة، يكون محميًا ولا يمكن لمؤشرات الترابط الأخرى الوصول إليه حتى ينتهي مؤشر الترابط من القراءة. أخرى يمكن استخدام الخيوط. لن يكون هناك أي تناقض في البيانات أو تلوث البيانات، مما يعني أن الخيوط غير الآمنة لا توفر حماية للوصول إلى البيانات، ومن الممكن أن تقوم خيوط متعددة بتغيير البيانات على التوالي وتكون البيانات الناتجة بيانات قذرة).
نظرًا لأن StringBuilder يتمتع بميزة السرعة مقارنةً بـ StringBuffer، فمن المستحسن استخدام فئة StringBuilder في معظم الحالات. ومع ذلك، عندما يتطلب التطبيق سلامة مؤشر الترابط، يجب استخدام فئة StringBuffer.
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer(" test"); sBuffer.append(" String Buffer"); System.out.println(sBuffer); } }
نتائج التجميع والتشغيل للمثال أعلاه هي كما يلي:
test String Buffer
فيما يلي الطرق الرئيسية التي تدعمها فئة StringBuffer:
رقم سري | وصف الطريقة |
---|---|
1 | إلحاق StringBuffer العام (String s) بإلحاق السلسلة المحددة بتسلسل الأحرف هذا. |
2 | public StringBufferverse() يستبدل تسلسل الأحرف هذا بصيغته المعكوسة. |
3 | حذف عام (int start، int end) يزيل الأحرف من سلسلة فرعية من هذا التسلسل. |
4 | إدراج عام (int offset، int i) يُدرج تمثيل السلسلة للوسيطة int في هذا التسلسل. |
5 | استبدال (int start، int end، String str) يستبدل الأحرف الموجودة في سلسلة فرعية من هذا التسلسل بالأحرف الموجودة في String المحددة. |
الطرق الموجودة في القائمة التالية مشابهة لتلك الخاصة بفئة السلسلة:
رقم سري | وصف الطريقة |
1 | سعة int () تُرجع السعة الحالية. |
2 | char charAt(int Index) يُرجع قيمة char في الفهرس المحدد بهذا التسلسل. |
3 | ضمان السعة باطلة (عدد صحيح من السعة) يضمن أن السعة تساوي على الأقل الحد الأدنى المحدد. |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) نسخ الأحرف من هذا التسلسل إلى صفيف الأحرف الهدف dst . |
5 | int IndexOf(String str) يُرجع فهرس التواجد الأول للسلسلة الفرعية المحددة في السلسلة. |
6 | int IndexOf(String str, int fromIndex) بدءًا من الفهرس المحدد، يتم إرجاع فهرس التواجد الأول للسلسلة الفرعية المحددة في السلسلة. |
7 | int lastIndexOf(String str) يُرجع الفهرس الموجود في هذه السلسلة لتواجد أقصى اليمين للسلسلة الفرعية المحددة. |
8 | int lastIndexOf(String str, int fromIndex) يُرجع الفهرس الموجود في هذه السلسلة لآخر تواجد للسلسلة الفرعية المحددة. |
9 | int length() تُرجع الطول بالأحرف. |
10 | void setCharAt(int Index, char ch) يضبط الحرف في الفهرس المحدد على ch . |
11 | void setLength(int newLength) يضبط طول تسلسل الأحرف. |
12 | CharSequence subSequence(int start, int end) يُرجع تسلسل أحرف جديد يمثل نتيجة لهذا التسلسل. |
13 | سلسلة فرعية (int start) تُرجع String جديدة تحتوي على تسلسل الأحرف الموجود حاليًا في تسلسل الأحرف هذا. |
14 | سلسلة فرعية (int start، int end) تُرجع String جديدة تحتوي على تسلسل الأحرف الموجود حاليًا في هذا التسلسل. |
15 | String toString() تُرجع تمثيل السلسلة للبيانات في هذا التسلسل. |