Avatar ·

ما الفرق بين StringBuilder و StringBuffer في Java؟

مرحبًا بالجميع! أنا أتعلم Java وأكتب وحدة خادم صغيرة لمعالجة السجلات. أحتاج إلى تجميع السلاسل النصية من أجزاء متعددة، وأعلم أن الربط باستخدام '+' في حلقة هو أمر سيء لأنه يُنشئ العديد من كائنات String الإضافية. بدأت باستخدام StringBuffer، لكن قائد فريقي قال إنه من الأفضل الانتقال إلى StringBuilder. لم أفهم تمامًا السبب. على الإنترنت يُكتب أن كلا الفئتين تفعلان نفس الشيء: تسمحان بتعديل السلسلة النصية دون إنشاء كائنات جديدة. إذن لماذا هناك فئتان؟ وأيهما يجب أن أختار؟ إليك مثال على الكود الخاص بي: ```java public class LogBuilder { public static void main(String[] args) { StringBuffer log = new StringBuffer(); for (int i = 0; i < 1000; i++) { log.append("الحدث #").append(i).append(": "); log.append("تمت المعالجة\n"); } System.out.println(log.toString()); } } ``` إذا قمت ببساطة باستبدال StringBuffer بـ StringBuilder، سيستمر الكود في العمل. هل يعني هذا أن...