محسن نوری اردستانی | Mohsen Noori Ardestani
محسن نوری اردستانی | Mohsen Noori Ardestani
خواندن ۱ دقیقه·۲ سال پیش

String VS StringBuffer

سوال_مصاحبه_string
تفاوت string و StringBuffer را بیان کنید؟ چه چیزی باعث immutable شدن string ها میشود؟ دلیل mutable بودن StringBuffer به چه صورت است؟ محل ذخیره سازی هرکدام کجا میباشد؟ امنیت و سرعت کدام بیشتر است؟

جواب:
?️تعریف ویژگیهای string: کلاسی است که طول آبجکت آن ثابت میماند. اشیا این کلاس immutable و thread_safe هستند برای همین این اشیا میتوانند در برنامه MultipleThread بدون انجام synchronization قرار گیرند. محل ذخیره سازی آنها استخر ثابت رشته (String Pool Constant) است. در انجام فرایند concatenation سرعت کمتری نسبت به StringBuffer دارد چون در هربار اجرا باید شی جدیدی بسازد. کلاس string متودهای ()equals و ()hashcode را پیاده سازی میکند.

?️تعریف ویژگیهای StringBuffer: کلاسی است که طول آبجکت آن ثابت نیست و اشیا آن mutable هستند. چون از متود ()append استفاده میکند، سرعت آن در concatenation بیشتر از کلاس string است. متود ()equals را پیاده سازی نمیکند. این کلاس متودهای زیادی برای کار با رشته ها دارد.

?️محل ذخیره_سازی اشیا string درون String_pool است که تمام کاربران به آن میتوانند دسترسی داشته باشند این ریسک بزرگی است که مقدار آنها قابل تغییر باشد برای همین آنها immutable هستند، از این رو تغییرناپذیر و ThreadSafe بودن String باعث امنیت بالای آن میشود و از آن برای آدرس های دیتابیس و غیره استفاده میشود.

?️محل ذخیره_سازی اشیا StringBuffer درون مموری است. اشیا این کلاس mutable و اکثر متودهای آن synchorednized هستند بنابراین دسترسی شی فقط برای یک thread به صورت لحظه ای میباشد نه بیشتر.

?️در اشیا StringBuffer خاصیت mutable به این صورت است که این کلاس کارکترهای رشته را درون آرایه ذخیره میکند و برای همین میتواند مقدار هرکدام از آیتم های آرایه را تغییر و یا آن را حذف کند.

?️در کلاس StringBuffer دو مورد متفاوت به نام ظرفیت(Capacity) و طول(length) داریم که در حالت عادی ظرفیت ۱۶ جای رزرو بیشتر از طول دارد.

string stringbufferstringذخیره سازی
برنامه نویس سمت وب و موبایل - علاقه مند به پژوهش
شاید از این پست‌ها خوشتان بیاید