[Java] الفرق بين StringBuffer و StringBuilder فى التعامل مع السلاسل النصية

اذهب الى الأسفل

[Java] الفرق بين StringBuffer و StringBuilder فى التعامل مع السلاسل النصية Empty [Java] الفرق بين StringBuffer و StringBuilder فى التعامل مع السلاسل النصية

مُساهمة من طرف زهراء في الخميس يناير 24, 2019 9:01 am

اهلا بكم

على الرغم من التشابة الكبير بين الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] فى التعامل مع السلاسل النصية فى الجافا الا ان هناك فروق جوهرية بينهما على النحو التالى :

1_الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] متزامنة synchronized وهذا يعني أنه اذا كان هناك أكثر من مسار thread لا يمكن استدعاء أساليب الفئة StringBuffer في وقت واحد ....فى حين أن الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] غير متزامنة non-synchronized و بالتالى فانة يمكن إنشاء اكثر  من مسار thread لاستدعاء أساليب الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] في وقت واحد.

2_ الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] أكثر كفاءة فى التعامل مع السلاسل النصية من الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط].


أمثلة للتوضيح :

المثال التالى يوضح كفائة الفئتين فى التعامل مع السلاسل النصية حيث يقوم البرنامج بعمل حلقة تكرارية من 1 الى 10 الف دورة ومن ثم الحاق الكلمة Tpoint من خلال الاسلوب [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] للفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] و الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] ...ثم حساب الزمن المستغرق لكل فئة فى عملية الالحاق :

الكود:
public class ConcatTest{  
    public static void main(String[] args){  
        long startTime = System.currentTimeMillis();  
        StringBuffer sb = new StringBuffer("Java");  
        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; i++){  
            sb2.append("Tpoint");  
        }  
        System.out.println("Time taken by StringBuilder: " + (System.currentTimeMillis() - startTime) + "ms");  
    }  
}  

المخرجات :


Time taken by StringBuffer: 16ms
Time taken by StringBuilder: 0ms

يلاحظ من عملية الاخراج أن الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] أكثر فلم تستغرق اى وقت يذكر لعملية الالحاق اعلا فى حين أن الفئة [ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط] أستغرقت حوالى 16 ميلى ثانية لنفس العملية

تحياتى
زهراء
زهراء
........
........

تاريخ التسجيل : 18/02/2011
المساهمات : 398
النقاط : 673
التقيم : 53
الدولة : مصر
الجنس : انثى

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى