logo

الفرق بين StringBuffer و StringBuilder

توفر Java ثلاث فئات لتمثيل سلسلة من الأحرف: String وStringBuffer وStringBuilder. فئة String هي فئة غير قابلة للتغيير بينما فئات StringBuffer وStringBuilder قابلة للتغيير. هناك العديد من الاختلافات بين StringBuffer وStringBuilder. تم تقديم فئة StringBuilder منذ الإصدار JDK 1.5.

فيما يلي قائمة بالاختلافات بين StringBuffer وStringBuilder:

الفرق بين StringBuffer و StringBuilder
لا.StringBufferStringBuilder
1)StringBuffer هو متزامن أي موضوع آمن. هذا يعني أن خيطين لا يمكنهما استدعاء أساليب StringBuffer في وقت واحد.StringBuilder هو غير متزامنة أي ليس خيطًا آمنًا. هذا يعني أنه يمكن لخيطين استدعاء أساليب StringBuilder في وقت واحد.
2)StringBuffer هو أقل كفاءة من StringBuilder.StringBuilder هو أكثر فعالية من StringBuffer.
3)تم تقديم StringBuffer في Java 1.0تم تقديم StringBuilder في Java 1.5

مثال على StringBuffer

BufferTest.java

// برنامج جافا لتوضيح استخدام فئة StringBuffer. public class BufferTest{ public static void main(String[] args){ StringBuffer buffer=new StringBuffer('hello'); buffer.append('java'); System.out.println(buffer); } }

انتاج:

 hellojava 

مثال على StringBuilder

BuilderTest.java

بيض عيد الفصح في الروبوت
 //Java Program to demonstrate the use of StringBuilder class. public class BuilderTest{ public static void main(String[] args){ StringBuilder builder=new StringBuilder('hello'); builder.append('java'); System.out.println(builder); } } 

انتاج:

 hellojava 

اختبار أداء StringBuffer وStringBuilder

دعونا نرى الكود للتحقق من أداء فئات StringBuffer و StringBuilder.

ConcatTest.java

 //Java Program to demonstrate the performance of StringBuffer and StringBuilder classes. public class ConcatTest{ public static void main(String[] args){ long startTime = System.currentTimeMillis(); StringBuffer sb = new StringBuffer(&apos;Java&apos;); for (int i=0; i<10000; i++){ sb.append('tpoint'); } system.out.println('time taken by stringbuffer: ' + (system.currenttimemillis() - starttime) 'ms'); starttime="System.currentTimeMillis();" stringbuilder sb2="new" stringbuilder('java'); for (int i="0;" i<10000; sb2.append('tpoint'); stringbuilder: < pre> <p> <strong>Output:</strong> </p> <pre> Time taken by StringBuffer: 16ms Time taken by StringBuilder: 0ms </pre> <hr></10000;>