کلاس
کد زیر را در نظر بگیرید:
String
رشته های تغییرناپذیر ایجاد می کند. این بدان معناست که اگر هر عملیاتی را روی یک رشته یا عملیاتی را روی یک رشته اعمال کنید، نتیجه یک رشته جدید خواهد بود. اگر این رشته جدید به هیچ متغیری اختصاص داده نشود، نتیجه عملیات از بین خواهد رفت. بر این اساس، عملیات روی چنین رشته هایی لزوماً منجر به ایجاد یک رشته جدید می شود. و این به معنای هزینه اضافی حافظه و زمان پردازنده است. اگر تعداد زیادی عملیات روی یک رشته وجود داشته باشد، اغلب استفاده از رشتههای پویا که توسط کلاس پیادهسازی میشوند کارآمدتر است StringBuilder
.
String s = "Some text";
int count = 100;
for(int i = 0; i<100;i++){
s+=i;
}
**********************
StringBuilder s = new StringBuilder(110);
int count = 100;
s.append("Some text");
for(int i = 0;i<count;i++){
s.append(i);
}
کد بالا همین مشکل را برطرف می کند. وقتی 100 زیررشته جدید به یک رشته داده شده اضافه می کنیم. مثال اول از کلاس برای این منظور استفاده می کند String
که خیلی کارآمد نیست زیرا هر اضافه کردن یک رشته فرعی منجر به ساخت یک شی جدید می شود String
. و این یک اتلاف اضافی از حافظه و زمان است. در مثال دوم، این مشکل با استفاده از کلاس حل شده است StringBuilder
. یک شی از کلاس را از قبل ایجاد می کنیم StringBuilder
و سپس با استفاده از متد append
رشته مورد نیاز خود را با تغییر محتویات شی ایجاد شده تشکیل می دهیم StringBuilder
، اما بدون ایجاد مجدد خود شی.
GO TO FULL VERSION