ارجحیت انواع داده ای primitive به boxed primitive

این آیتم در ارتباط با استفاده به جا از انواع داده ای primitive Type ها و boxed Primitive Type هست که به نام reference Type هم شناخته میشن. همونطور که در ابتدا هم توضیح میده جاوا دو سیستم در انواع داده‌ای به اسم primitive typeها (مثل int ,double ,boolean) و reference Typeها (مثل String ,List و …) داره. معادل هر نوع primitive یه نوع Boxed primitive هم وجود داره منتها باید بدونیم کجا از کدوم یکی استفاده کنیم. این دو نوع سه تفاوت عمده دارند :

  1. primitive ها فقط مقدار خودشون رو دارن اما boxed primitiveها identity دارن که این مجزا از مقادیرشون هست و به این ترتیب نمونه های آنها میتونن یه مقدار داشته باشن اما identity متفاوت داشته باشن.
  2. متغیرهای Primitive به صورت پیش فرض مقداری براشون ثبت میشه اگه مقداری بهشون ندین این مقادیر را خواهند داشت.یعنی مقدار پیش فرض متغیرهای عددی مثل long و int و float میشه ۰ , متغیرهای boolean میشه false. ولی مقدار پیش فرض تمامی متغیرهای غیر primitive یا به عبارتی reference-type مثل String, FileInputStream,MyClass و همچنین تمامی متغیرهای Boxed-primitive از جمله Integer, Long و … میشه null.
  3. نوع primitive از نظر زمان و فضا به صرفه تر هستن

این آیتم مثال های مختلفی رو بررسی می کنه و در این مثال ها boxing و unboxing‌های نادرست رو توضیح میده. نکته بعدی که تو مثال صفحه 273 توضیح میده اینه که اگر از اوپراتور == برای انواع boxed primitive استفاده کنیم که این اشتباه محضه!! درواقع == بجای مقادیر identity رو چک میکنه. یک نکته دیگه هم اینه که حواسمون جمع باشه تو این boxing و unboxing های نابجا و مکرر میتونه performance برنامه رو به شدت کاهش بده که مثالشو تو صفحه 275 میتونیم ببینیم.