نوعهای Wrapper در Java
یک ArrayList<Integer> بهنام nums بسازید، nums.add(9); بعد nums.add(4); را صدا بزنید و nums.get(0) را چاپ کنید. Crate.java را کامپایل کنید و java Crate را اجرا کنید. صفحه باید یک خط نشان دهد: 9. داخل براکت زاویهای Integer است، نه int. نگه داشتن عدد صحیح در لیست از راه نوع Wrapper — تا مجموعه بتواند شیء نگه دارد — کار این صفحه است.
چرا لیست به Integer نیاز دارد
روی صفحهٔ iterating لیست واژهٔ String نگه میداشت. ArrayList شیء نگه میدارد. نوع اولیهٔ int شیء نیست. نوع Wrapper بهنام Integer شکل شیء همان عدد صحیح است. داخل براکت زاویهای بنویسید Integer. وقتی add(9) میزنید، Java میتواند عدد اولیهٔ 9 را برای شما به Integer بستهبندی کند. همان بستهبندی آرام برای فایل درس کافی است.
Crate.java را باز کنید. نام کلاس public را Crate نگه دارید تا با نام فایل یکی باشد. باقیماندهٔ for (String t : tags)، addهای oak و pine، دموهای Lane و هر باقیماندهٔ HashSet یا map را پاک کنید. هر Scanner یا nextLine را هم پاک کنید. برنامه نباید منتظر تایپ بماند.
نزدیک بالا، بالای public class Crate، بنویسید:
import java.util.ArrayList;
داخل main لیست را بسازید:
ArrayList<Integer> nums = new ArrayList<Integer>();
ArrayList<int> ننویسید — javac آن شکل را رد میکند. روی این صفحه دو طرف خط ساخت را Integer نگه دارید. بعد دو عدد صحیح بدون نقلقول add کنید:
nums.add(9);
nums.add(4);
بعد بنویسید:
System.out.println(nums.get(0));
خانهٔ صفر مقدار 9 را دارد. قبل از کامپایل ذخیره کنید.
import java.util.ArrayList;
public class Crate {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(9);
nums.add(4);
System.out.println(nums.get(0));
}
}
از پوشهای که Crate.java در آن است اجرا کنید javac Crate.java. وقتی پرانتز و آکولاد و براکت زاویهای و نقطهویرگول جور باشند، خودِ javac خطی نمینویسد. بعد java Crate را بزنید — نه java Crate.java و نه java Integer. پسوند .java را از فرمان اجرا بردارید.
برنامه باید یک خط چاپ کند و بایستد: 9. منتظر تایپ شما نمیماند. اگر ترمینال منتظر ورودی صفحهکلید ماند، هنوز صدای nextLine از تمرین قدیمی در فایلی مانده است. آن را پاک کنید و ساخت ArrayList<Integer>، دو خط add، و System.out.println(nums.get(0)); را نگه دارید.
یکبار اجرا را راه بروید. Java از Crate.main شروع میکند. لیست با دو عدد صحیح بستهبندیشده رشد میکند. فراخوانی get(0) اولین Integer را برمیگرداند. خط چاپ 9 را مینویسد. صفحه 9 را نشان میدهد. چیز دیگری نباید چاپ شود. اگر oak یا pine دیدید، هنوز دموی iterating از Lane در حال اجراست — بروید سراغ java Crate. اگر 4 دیدید، اشتباهی get(1) را چاپ کردهاید؛ برای فایل درس get(0) را نگه دارید. اگر [9, 4] دیدید، خودِ شیء لیست را چاپ کردهاید نه خانهٔ صفر — برای مسیر کوئیز println(nums.get(0)) را نگه دارید.
اگر javac شکل ArrayList<int> را رد کند، براکتها را به Integer عوض کنید. همان خطا نکتهٔ قانون نوع این درس است؛ براکت را درست کنید و دوباره کامپایل کنید. اگر با نقلقول بنویسید nums.add("9");، دارید String اضافه میکنید و برای ArrayList<Integer>، javac رد میکند. روی این صفحه رقم بدون نقلقول نگه دارید. اگر import نباشد، javac نمیتواند ArrayList را پیدا کند — import java.util.ArrayList; را بالای کلاس بگذارید. املای Integer با I بزرگ مهم است؛ integer داخل براکت با نوعی که Java اینجا انتظار دارد جور نمیشود.
Unbox به int ساده
دموی دوم مقدار اول را داخل متغیر اولیهٔ int میخواند، بعد همان متغیر را چاپ میکند. Java روی این انتساب Integer را برای شما باز میکند.
import java.util.ArrayList;
public class Crate {
public static void main(String[] args) {
ArrayList<Integer> nums = new ArrayList<Integer>();
nums.add(9);
nums.add(4);
int n = nums.get(0);
System.out.println(n);
}
}
همانطور کامپایل و اجرا کنید. صفحه هنوز 9 را نشان میدهد. خط int n = nums.get(0); مقدار Wrapper را بهصورت int ساده بیرون میکشد. روی مسیر مبتدی این صفحه لازم نیست intValue() صدا بزنید. فایل درس اول را شکل مستقیم println(nums.get(0)) نگه دارید. از فایل unbox استفاده کنید تا ببینید متغیر اولیه میتواند چیزی را نگه دارد که لیست بهصورت Integer ذخیره کرده. نام n را همانطور که نشان داده شده نگه دارید تا خط چاپ کوتاه بماند. for-each روی Stringهای tags را داخل این فایل دوم قاطی نکنید — با لیست عدد و یک انتساب int بمانید.
روبهروی هم
یک جدول کوتاه قانون نوع را روشن نگه میدارد.
📊 int vs Integer for lists
| Piece | On this page |
|---|---|
| list type | ArrayList<Integer> |
| illegal | ArrayList<int> — not allowed |
| add | nums.add(9); — boxes to Integer |
| read | nums.get(0) prints 9; may unbox to int n |
جدول فقط یادآوری است. قطعههایی که نگه میدارید import، ArrayList<Integer>، دو add، و get(0) هستند. |
در مقایسه با لیست String و با اولیهٔ تنها
روی صفحهٔ iterating، ArrayList<String> واژه نگه میداشت. آن هنوز کار میکند. این صفحه نوع عنصر را به Integer عوض میکند تا عدد صحیح داخل لیست بنشیند. for-each باقیماندهٔ Lane که oak و pine چاپ میکند درس دیگری است. برای این صفحه Crate را نگه دارید و از get(0) عدد 9 را چاپ کنید.
یک int x = 9; تنها هنوز بدون هیچ لیستی کار میکند. Wrapper وقتی مهم است که API مجموعه در براکت زاویهای نوع شیء بخواهد. Wrapperهای دیگر همان ایده را بعداً دنبال میکنند — Double کنار double، Boolean کنار boolean — ولی این صفحه Integer و int را نگه میدارد تا صفحه یک عدد روشن بماند. امروز لازم نیست همهٔ نامهای Wrapper را حفظ کنید؛ یکبار الگو را با Integer کنار int و شکل غیرمجاز ArrayList<int> یاد بگیرید.
وقتی فایلهای قدیمی Lane.java هنوز نزدیکاند، اگر فرمان اجرا را گیج نمیکنند همان بگذارید، یا فقط وقتی گیج میکنند پاکشان کنید. بعد از کامپایل لیست Wrapper این درس، java Crate را اجرا کنید. مسیر Collections اینجا با همان 9 روشن روی صفحه تمام میشود؛ بعد کورس به خطا و فایل میچرخد.
چه چیزی برای exceptions میماند
این صفحه نیاز Wrapper ماژول Collections برای عدد صحیح در لیست را میبندد. ماژول بعد خطاها را با exceptions باز میکند. اینجا روی این صفحه با ArrayList<Integer> و get(0) بمانید. try یا catch را روی این صفحه الزام نکنید.
قبل از exceptions
میتوانید java.util.ArrayList را import کنید، ArrayList<Integer> nums بسازید، 9 و 4 را add کنید، و با چاپ nums.get(0) عدد 9 را ببینید. همچنین میتوانید به int n unbox کنید. Crate.java را کامپایل کنید و java Crate را اجرا کنید. نوع Wrapper اجازه داد لیست عدد صحیح نگه دارد. صفحهٔ بعد exceptions است، جایی که برنامه مشکل را اعلام و مدیریت میکند.
Integer را داخل براکت زاویهای نگه دارید. add عدد را بدون نقلقول نگه دارید. برای صفحهٔ درس 9 همان get(0) را نگه دارید. این سه عادت ایستگاه بازرسی قبل از رفتن جلو هستند. وقتی بعد از کامپایل تمیز Crate.java صفحه از لیست Integer مقدار 9 را نشان داد، wrappers کار این درس را کرده و برای موضوع بعد آمادهاید.
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود