معادل هر داده اولیه در جاوا یک نوع ارجاعی با نام type-wrapper وجود دارد، برای مثال نوع داده اولیه int معادل نوع داده ارجاعی Integer را دارد. قبل از Java SE 5 برای مقدار دهی به یک متغییر از نوع Integer باید حتما یک شئ از کلاس Integer ایجاد می کردیم و همچنین برای مقدار دهی به یک متغییر از نوع int با استفاده از یک شئ Integer باید حتما از متد intValue کلاس Integer استفاده می کردیم، در حالت کلی کد زیر خطا بود:
Integer integer = 10; // error
integer = new Integer(5);
int value = integer; // error
اما بعد از Java SE 5 و با افزوده شدن قابلیت Autoboxing و Auto-Unboxing کد بالا باعث ایجاد خطا نمی شود. Autoboxing مقدار یک داده اولیه (مانند int) را به یک شئ از نوع type-wrapper متناظر آن نوع اولیه تبدیل می کند (برای int می شود Integer) و Auto-Unboxing نیز عکس این کار را انجام می دهد.