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.0StringBuilder הוצג ב-Java 1.5

דוגמה של StringBuffer

BufferTest.java

//תוכנית 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

מה זה $home linux
 //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;>