Java Developer | digipay
Autoboxing in Java
اتوبوکسینگ (Autoboxing) در جاوا

در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.
این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .
StringBuilder vs StringBuffer vs String
اتوبوکسینگ (Autoboxing) یک ویژگی در زبان برنامهنویسی جاوا است که به طور خودکار انواع داده اولیه (primitive types) را به اشیاء بستهبندی (wrapper classes) مربوطه تبدیل میکند. این ویژگی از نسخه 5 جاوا معرفی شده است و به برنامهنویسان این امکان را میدهد که بدون نیاز به نوشتن کد اضافی، بین انواع داده اولیه و اشیاء بستهبندی شده جابجا شوند.
انواع داده اولیه و اشیاء بستهبندی شده:
- int و Integer
- double و Double
- boolean و Boolean
- char و Character
- و سایر انواع داده اولیه و بستهبندی شده مربوطه
int x = 10;
Integer y = x; // اتوبوکسینگ: int به Integer تبدیل میشوددر این مثال، مقدار اولیه x از نوع int به طور خودکار به یک شیء از نوع Integer تبدیل شده و به متغیر y اختصاص داده میشود.
چه زمانی اتوبوکسینگ اتفاق میافتد؟
- تخصیص به یک متغیر از نوع بستهبندی شده: وقتی یک مقدار اولیه به یک متغیر از نوع بستهبندی شده اختصاص داده شود، اتوبوکسینگ رخ میدهد.
- گذراندن یک آرگومان اولیه به یک متد که یک شیء بستهبندی شده را انتظار دارد: هنگام ارسال یک مقدار اولیه به عنوان آرگومان به یک متد که یک شیء بستهبندی شده را به عنوان پارامتر دریافت میکند، اتوبوکسینگ اتفاق میافتد.
- اضافه کردن یک مقدار اولیه به یک مجموعه از اشیاء بستهبندی شده: هنگام اضافه کردن یک مقدار اولیه به یک مجموعه مانند
ArrayList<Integer>, اتوبوکسینگ رخ میدهد.
چرا از اتوبوکسینگ استفاده میشود؟
- سادگی کد: با اتوبوکسینگ، نیازی به نوشتن کد اضافی برای تبدیل انواع داده اولیه به اشیاء بستهبندی شده نیست.
- یکپارچگی با مجموعهها و سایر APIها: بسیاری از APIهای جاوا از اشیاء بستهبندی شده استفاده میکنند. با اتوبوکسینگ، میتوان به راحتی انواع داده اولیه را با این APIها یکپارچه کرد.
نکات مهم درباره اتوبوکسینگ:
- اتوباکسیگ یک ویژگی کامپایلری است: کامپایلر جاوا به طور خودکار کد لازم برای تبدیل انواع داده را تولید میکند.
- اتوباکسیگ برای هر مقدار جدید ایجاد میشود: اگر چندین بار یک مقدار اولیه به یک متغیر از نوع بستهبندی شده اختصاص داده شود، برای هر بار یک شیء جدید ایجاد میشود.
- برای مقایسه اشیاء بستهبندی شده از
equals()استفاده کنید: برای مقایسه دو شیء بستهبندی شده، از متدequals()استفاده کنید. استفاده از عملگر==برای مقایسه اشیاء بستهبندی شده ممکن است نتایج غیرمنتظرهای را به همراه داشته باشد.
مثال برای مقایسه با equals():
Integer a = 100;
Integer b = 100;
System.out.println(a == b); // ممکن است true یا false باشد (بسته به پیادهسازی JVM)
System.out.println(a.equals(b)); // همیشه trueجمعبندی:
اتوبوکسینگ یک ویژگی مفید در جاوا است که به برنامهنویسان اجازه میدهد به راحتی بین انواع داده اولیه و اشیاء بستهبندی شده جابجا شوند. با درک نحوه کار اتوبوکسینگ، میتوانید کدهای جاوا تمیزتر و خواناتر بنویسید.اتوبوکسینگ (Autoboxing) در جاوا
اتوبوکسینگ (Autoboxing) یک ویژگی در زبان برنامهنویسی جاوا است که به طور خودکار انواع داده اولیه (primitive types) را به اشیاء بستهبندی (wrapper classes) مربوطه تبدیل میکند. این ویژگی از نسخه 5 جاوا معرفی شده است و به برنامهنویسان این امکان را میدهد که بدون نیاز به نوشتن کد اضافی، بین انواع داده اولیه و اشیاء بستهبندی شده جابجا شوند.
انواع داده اولیه و اشیاء بستهبندی شده:
- int و Integer
- double و Double
- boolean و Boolean
- char و Character
- و سایر انواع داده اولیه و بستهبندی شده مربوطه
int x = 10;
Integer y = x; //روش اول
y = Integer.valueOf(x); // روش دوم
x = y.intValue(); // روش سومدر این مثال، مقدار اولیه x از نوع int به طور خودکار به یک شیء از نوع Integer تبدیل شده و به متغیر y اختصاص داده میشود.

چه زمانی اتوبوکسینگ اتفاق میافتد؟
- تخصیص به یک متغیر از نوع بستهبندی شده: وقتی یک مقدار اولیه به یک متغیر از نوع بستهبندی شده اختصاص داده شود، اتوبوکسینگ رخ میدهد.
- گذراندن یک آرگومان اولیه به یک متد که یک شیء بستهبندی شده را انتظار دارد: هنگام ارسال یک مقدار اولیه به عنوان آرگومان به یک متد که یک شیء بستهبندی شده را به عنوان پارامتر دریافت میکند، اتوبوکسینگ اتفاق میافتد.
- اضافه کردن یک مقدار اولیه به یک مجموعه از اشیاء بستهبندی شده: هنگام اضافه کردن یک مقدار اولیه به یک مجموعه مانند
ArrayList<Integer>, اتوبوکسینگ رخ میدهد.
چرا از اتوبوکسینگ استفاده میشود؟
- سادگی کد: با اتوبوکسینگ، نیازی به نوشتن کد اضافی برای تبدیل انواع داده اولیه به اشیاء بستهبندی شده نیست.
- یکپارچگی با مجموعهها و سایر APIها: بسیاری از APIهای جاوا از اشیاء بستهبندی شده استفاده میکنند. با اتوبوکسینگ، میتوان به راحتی انواع داده اولیه را با این APIها یکپارچه کرد.
نکات مهم درباره اتوبوکسینگ:
- اتوباکسیگ یک ویژگی کامپایلری است: کامپایلر جاوا به طور خودکار کد لازم برای تبدیل انواع داده را تولید میکند.
- اتوباکسیگ برای هر مقدار جدید ایجاد میشود: اگر چندین بار یک مقدار اولیه به یک متغیر از نوع بستهبندی شده اختصاص داده شود، برای هر بار یک شیء جدید ایجاد میشود.
- برای مقایسه اشیاء بستهبندی شده از
equals()استفاده کنید: برای مقایسه دو شیء بستهبندی شده، از متدequals()استفاده کنید. استفاده از عملگر==برای مقایسه اشیاء بستهبندی شده ممکن است نتایج غیرمنتظرهای را به همراه داشته باشد.
مثال برای مقایسه با equals():
Integer a = 100;
Integer b = 100;
System.out.println(a == b); // ممکن است true یا false باشد (بسته به پیادهسازی JVM)
System.out.println(a.equals(b)); // همیشه trueجمعبندی:
اتوبوکسینگ یک ویژگی مفید در جاوا است که به برنامهنویسان اجازه میدهد به راحتی بین انواع داده اولیه و اشیاء بستهبندی شده جابجا شوند. با درک نحوه کار اتوبوکسینگ، میتوانید کدهای جاوا تمیزتر و خواناتر بنویسید.
منتظر نگاه های زیباتون هستم .
موفق و پیروز باشید.
مطلبی دیگر از این انتشارات
using JUnit5 and Mockito (coding and test)
مطلبی دیگر از این انتشارات
memoryHeap and memoryLeak in java
مطلبی دیگر از این انتشارات
Java Exception Handling