کلاسهای بستهبندی (Java Wrapper Classes)
کلاسهای بستهبندی (Wrapper Classes): پلِ ارتباطی 🌉🎁
در جاوا، انواعِ دادهیِ اصلی (Primitive Types) مانند int و char اشیاء نیستند. این موضوع باعث میشود نتوانیم آنها را در کالکشنها (مثل ArrayList) قرار دهیم. کلاسهای بستهبندی راهی برای تبدیلِ این انواع به اشیاء هستند.
۱. لیست کلاسهای بستهبندی
<th>Primitive Type</th><th>Wrapper Class</th>| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
| char | Character |
۲. Autoboxing و Unboxing ⚡
- Autoboxing: تبدیلِ خودکارِ Primitive به شیء (مثلاً
5بهInteger). - Unboxing: تبدیلِ خودکارِ شیء به Primitive.
۳. متدهای کاربردی Wrapper ها
یکی از بزرگترین مزایای این کلاسها، متدهایِ کمکیِ آنهاست. مثلاً تبدیلِ رشته به عدد:
{code_block('String s = "123";\nint num = Integer.parseInt(s);\n\nSystem.out.println(Integer.toHexString(255)); // تبدیل به هگزادسیمال')}بخش تخصصی: مهندسی پیشرفته و امنیت سیستم 🛡️⚙️
در این بخش، به مفاهیمی میپردازیم که برای پایداری و امنیتِ برنامههای بزرگِ جاوا حیاتی هستند.
۱. استراتژی مدیریت استثناها (Fail-Fast vs Fail-Safe)
در طراحی سیستمهای بزرگ، ما معمولاً از الگوی Fail-Fast استفاده میکنیم؛ یعنی به محض وقوع خطا، برنامه را با یک استثنای دقیق متوقف میکنیم تا از انتشار فساد دادهها جلوگیری کنیم. همچنین، نباید استثناها را با یک بلاکِ catch خالی "خفه" کنید. هر استثنا باید حتماً لاگ (Log) شود یا به لایهی بالاتر گزارش داده شود.
۲. کالبدشکافی Autoboxing در حافظه
تبدیلِ اتوماتیکِ انواعِ Primitive به اشیاءِ Wrapper (مثل تبدیل int به Integer) در ظاهر ساده است، اما در حلقههایِ سنگین میتواند باعثِ ایجادِ هزاران شیءِ اضافه در حافظه Heap و در نتیجه فشار به Garbage Collector شود. همیشه در بخشهای حساس به پرفورمنس، از انواع Primitive استفاده کنید.
۳. پارادایم برنامهنویسی تابعی (Functional Programming)
استفاده از Lambda Expressions شروعِ حرکتِ جاوا به سمت برنامهنویسی تابعی بود. این سبک نه تنها باعثِ کوتاهتر شدنِ کدها میشود، بلکه امکانِ اجرایِ موازیِ کدها (Parallel processing) را روی پردازندههای چند هستهای بسیار سادهتر میکند.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
یک رشته به نام s با مقدار "456" دارید. با استفاده از کلاسِ بستهبندیِ مناسب، آن را به عددِ صحیح (int) تبدیل کرده و ضرب در 2 چاپ کنید.
public class Main {
public static void main(String[] args) {
String s = "456";
int num = Integer.parseInt(s);
System.out.println(num * 2);
}
}
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.