صادق خانزادی
صادق خانزادی
خواندن ۵ دقیقه·۴ ماه پیش

Autoboxing in Java

اتوبوکسینگ (Autoboxing) در جاوا

در این مقاله فرض میکنیم که شما اطلاعات حدودی از Java Collections دارید.

این سلسله مقالات که برای تکمیل مقاله Java Collections - Everything You MUST Know نوشته شده برای بهبود و درک بهتر collectionها و مواردی که به طور روزمره دارید استفاده میکنید نوشته شده لطفا تمام این دسته بندی رو برای درک بهتر مطالعه کنید .

Mutable VS Immutable in java

StringBuilder vs StringBuffer vs String

Integer vs int

HashMap vs TreeMap vs Set

Heap And Stack

Memory Heap vs Memory Leak

Integer Constant Pool

Integer Pool vs String Pool

Ternary Operator

Autoboxing




اتوبوکسینگ (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

جمع‌بندی:

اتوبوکسینگ یک ویژگی مفید در جاوا است که به برنامه‌نویسان اجازه می‌دهد به راحتی بین انواع داده اولیه و اشیاء بسته‌بندی شده جابجا شوند. با درک نحوه کار اتوبوکسینگ، می‌توانید کدهای جاوا تمیزتر و خواناتر بنویسید.


منتظر نگاه های زیباتون هستم .

موفق و پیروز باشید.

java
Java Developer - Technical Team Lead At Dotin
شاید از این پست‌ها خوشتان بیاید