در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.
این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .
StringBuilder vs StringBuffer vs String
در جاوا، برای بهینه سازی مصرف حافظه و افزایش سرعت اجرای برنامه، از مکانیزمی به نام Pooling استفاده میشود. این مکانیزم به این صورت عمل میکند که اشیاء تکراری به جای ایجاد مجدد، به یک نسخه مشترک اشاره میکنند. در این بین، دو نوع Pool بسیار مهم به نامهای String Pool و Integer Pool وجود دارند.
مثال:
String s1 = "سلام" String s2 = "سلام" // توی این حالت یدونه سلام جدید علاوه بر سلام قبلی ساخته میشود ، به شکل اول مقاله دقت کنید String h = new String("سلام"); System.out.println(s1 == s2); // true System.out.println(s1 == h); // false Integer i1 = 100; Integer i2 = 100; System.out.println(i1 == i2); // true (اگر در محدوده Integer Pool باشد) Integer i3 = 128; Integer i4 = 128; System.out.println(i3 == i4); // false (خارج از محدوده Integer Pool)
تغییرناپذیر است: رشتههای موجود در String Pool تغییرناپذیر هستند. هرگونه تغییری در یک رشته باعث ایجاد یک رشته جدید میشود.
ممکن است در پیادهسازیهای مختلف جاوا متفاوت باشد: محدوده اعداد ذخیره شده در Integer Pool ممکن است در پیادهسازیهای مختلف جاوا متفاوت باشد.
استفاده از valueOf()
: برای ایجاد اشیاء Integer، بهتر است از متد valueOf()
کلاس Integer استفاده کنید. این متد ابتدا در Integer Pool جستجو میکند و در صورت وجود، به همان شیء موجود اشاره میکند.
در آخر بگیم که String Pool و Integer Pool دو مکانیزم مهم در جاوا هستند که به بهینهسازی مصرف حافظه و افزایش سرعت اجرای برنامه کمک میکنند. درک این مفاهیم برای برنامهنویسان جاوا بسیار مهم است تا بتوانند کدهای کارآمدتری بنویسند.
منتظر نگاه های زیباتون هستم .
موفق و پیروز باشید.