سلام دوستان! توی این مقاله میخوایم در مورد یه مفهوم خیلی کاربردی توی برنامهنویسی، به خصوص زبانهایی مثل جاوا، صحبت کنیم: اتوباکسینگ (Autoboxing). شاید اسمش یکم پیچیده باشه، ولی خیالتون راحت، خیلی سادهتر از اونیه که فکر میکنید. تصور کنید کامپیوترتون خودش اتوماتیک یه سری کارها رو براتون انجام میده، مثلاً عددها رو بستهبندی میکنه و تحویلتون میده. این تقریباً همون کاریه که اتوباکسینگ انجام میده.
اعداد اولیه و اشیاء: تفاوت چیه؟
اول از همه، باید بدونیم که توی برنامهنویسی دو نوع داده اصلی داریم: اعداد اولیه (Primitive Types) و اشیاء (Objects). اعداد اولیه مثل int
(عدد صحیح)، double
(عدد اعشاری)، boolean
(درست یا غلط) و char
(کاراکتر) هستند. اینها خیلی سریع و کارآمد هستند، چون مستقیم توی حافظه ذخیره میشن. اما اشیاء کمی پیچیدهترند. اشیاء مثل Integer
، Double
، Boolean
و Character
در واقع "بستهبندی" شدههای اعداد اولیه هستند. یه جورایی مثل اینه که شما یه هدیه رو توی یه جعبه بذارید. خود هدیه همون عدد اولیه است و جعبه همون شیء.
چرا به جعبه نیاز داریم؟
شاید بپرسید خب چه کاریه؟ چرا باید عدد رو بذاریم توی جعبه؟ جواب اینه که بعضی جاها توی برنامهنویسی، ما مجبوریم با اشیاء کار کنیم، نه با اعداد اولیه. مثلاً، فرض کنید یه لیستی از اعداد دارید. توی خیلی از زبانهای برنامهنویسی، لیستها فقط میتونن اشیاء رو نگهداری کنن، نه اعداد اولیه رو. اینجاست که اتوباکسینگ به کمک ما میاد.
اتوباکسینگ چطوری کار میکنه؟
اتوباکسینگ به زبون ساده یعنی اینکه کامپیوترتون به صورت اتوماتیک یه عدد اولیه رو میذاره توی یه جعبه و تبدیلش میکنه به یه شیء. فرض کنید شما این کد رو دارید:
int myInt = 10;
Integer myInteger = myInt; // اتوباکسینگ!
توی خط دوم، کامپیوتر به صورت اتوماتیک عدد 10
(که یه int
هست) رو تبدیل میکنه به یه شیء از نوع Integer
. شما لازم نیست هیچ کار دیگهای انجام بدید! خودش انجام میده. اتوباکسینگ خیلی بهمون کمک میکنه که کدهامون تمیزتر و خواناتر بشه.
یه مثال عملی:
فرض کنید میخواید یه لیستی از اعداد صحیح رو ایجاد کنید و جمع همهی اونها رو حساب کنید:
import java.util.ArrayList;
public class AutoboxingExample {
public static void main(String[] args) {
ArrayList<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
int sum = 0;
for (int number : numbers) { // Unboxing
sum += number;
}
System.out.println("Sum: " + sum);
}
}
توی این مثال، ما یه ArrayList
از نوع Integer
درست کردیم. وقتی عددها رو با استفاده از add
به لیست اضافه میکنیم، اتوباکسینگ اتفاق میافته و اعداد int
تبدیل میشن به اشیاء Integer
. بعد وقتی توی حلقه for
داریم روی لیست میچرخیم، عددها دوباره از جعبه خارج میشن (به این کار میگن "آنباکسینگ" یا Unboxing) و دوباره تبدیل میشن به int
تا بتونیم جمعشون رو حساب کنیم.
جدول مقایسه:
نوع داده | نوع اولیه (Primitive) | نوع شیء (Object) |
---|---|---|
عدد صحیح | int |
Integer |
عدد اعشاری | double |
Double |
درست/غلط | boolean |
Boolean |
کاراکتر | char |
Character |
چند نکته مهم:
Integer
مقدار null
داشته باشه و شما بخواید اون رو آنباکس کنید (یعنی تبدیلش کنید به int
)، ممکنه با خطای NullPointerException
مواجه بشید. این خطا زمانی اتفاق میوفته که شما سعی میکنید با یه شیء کار کنید که اصلا وجود ندره و null هستش.Integer
از متد equals()
استفاده کنید، نه از عملگر ==
. عملگر ==
فقط چک میکنه که آیا دو تا شیء به یک مکان توی حافظه اشاره میکنن یا نه، ولی equals()
مقدار داخلشون رو مقایسه میکنه. برای اعداد کوچیک (معمولا بین -128 و 127) عملگر ==
ممکنه درست کار کنه، چون جاوا این اعداد رو کش (Cache) میکنه، ولی برای اعداد بزرگتر ممکنه جواب غلط بده.خلاصه:
اتوباکسینگ یه قابلیت خیلی خوب توی زباهای برنامهنویسیه که بهمون اجازه میده خیلی راحتتر با اعداد اولیه و اشیاء کار کنیم. کامپیوتر به صورت اتوماتیک اعداد اولیه رو تبدیل میکنه به اشیاء، و برعکس. البته باید حواسمون به کارایی و خطاهای احتمالی هم باشه. امیدوارم این مقاله براتون مفید بوده باشه!
کلمات کلیدی: اتوباکسینگ، Autoboxing، جاوا، Java، اعداد اولیه، Primitive Types، اشیاء، Objects، آنباکسینگ، Unboxing، Integer, Double, Boolean, Character
int
به معادل شیءاش مانند Integer
است.Integer
) به نوع دادهای ابتدایی معادلش (مثلاً int
).NullPointerException
رخ بده؟Integer
مقدار null
داشته باشد و شما سعی کنید آن را آنباکس کنید (یعنی تبدیلش کنید به int
)، خطای NullPointerException
رخ میدهد.امتیاز شما به این مطلب
امتیاز: 5 از 5 (مجموع 1 رای)
اولین نفری باشید که در مورد این مقاله نظر می دهید!
techfeed.ir© 2024 All rights reserved