في Java و String و StringBuffer و StringBuilder غالبًا ما يتم استخدام فئات السلسلة في البرمجة. الفرق بينهما هو أيضًا سؤال يُطرح غالبًا في المقابلات. لخص الآن وانظر كيف تكون مختلفة ونفس الشيء.
1. متغير وغير قابل للتغيير
يستخدم فئة السلسلة مجموعة أحرف لحفظ السلاسل ، على النحو التالي: نظرًا لوجود معدل "نهائي" ، يمكنك معرفة أن كائنات السلسلة غير قابلة للتغيير.
قيمة char النهائية الخاصة [] ؛
كل من StringBuilder و StringBuffer موروثة من فئة AbstractStringBuilder. في AbstractStringBuilder ، يتم استخدام صفائف الأحرف لحفظ السلاسل. على النحو التالي ، يمكن ملاحظة أن كلا الكائنين قابلة للتغيير.
char [] القيمة ؛
2. هل هو متعدد الخيوط وآمنة
الكائنات الموجودة في السلسلة غير قابلة للتغيير ، بحيث يمكن فهمها على أنها ثوابت ، والتي من الواضح أنها آمنة للخيط.
AbstractStringBuilder هي فئة من الوالدين العامين من StringBuilder و StringBuffer ، والتي تحدد بعض العمليات الأساسية للسلاسل ، مثل SextedCapity ، إلحاق ، إدراج ، فهرس وغيرها من الأساليب العامة.
أضاف StringBuffer قفل المزامنة إلى الطريقة أو قفل المزامنة إلى الطريقة المدعو ، لذلك فهو آمن مؤشر الترابط. انظر رمز المصدر التالي:
SuperSbuffer stringBuffer العكسي () {super.reverse () ؛ إرجاع هذا ؛} public int indexof (String str) {return indexof (str ، 0) ؛ // هناك طريقة int متزامنة عامة (String str ، int fromIndex)}لا يضيف StringBuilder أقفال المزامنة إلى هذه الطريقة ، لذلك فهو غير آمن.
3. StringBuilder و StringBuffer مشترك
StringBuilder و StringBuffer لديهم فئات الوالدين العامة AbstractStringBuilder ( فئة مجردة ).
أحد الاختلافات بين الطبقات المجردة والواجهات هو أنه يمكن تعريف بعض الأساليب العامة للفئات الفرعية في الفئات المجردة. تحتاج الفئات الفرعية فقط إلى إضافة وظائف جديدة ولا تحتاج إلى تكرار الأساليب الحالية ؛ بينما تحدد الواجهات الأساليب والثوابت فقط.
ستتصل طرق StringBuilder و StringBuffer بالأساليب العامة في AbstractStringBuilder ، مثل Super.Append (...). إنه فقط أن StringBuffer سيضيف كلمة رئيسية متزامنة إلى الطريقة ومزامنةها.
أخيرًا ، إذا لم يكن البرنامج متعدد الخيوط ، فإن استخدام StringBuilder يكون أكثر كفاءة من StringBuffer.
المقال أعلاه تحليل متعمق للاختلافات بين السلسلة و stringBuffer و StringBuilder في Java هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.