CodeGym /وبلاگ جاوا /Random-FA /کلاس های Wrapper در جاوا
John Squirrels
مرحله
San Francisco

کلاس های Wrapper در جاوا

در گروه منتشر شد
سلام! شما در حال حاضر به خوبی با انواع اولیه آشنا هستید و تا حد زیادی با آنها کار کرده اید. در برنامه نویسی (و به طور خاص جاوا)، اولیه ها مزایای زیادی دارند: آنها از حافظه کمی استفاده می کنند (و در نتیجه برنامه را کارآمدتر می کنند) و دارای یک محدوده مشخص از مقادیر هستند. با این حال، در حین یادگیری جاوا، ما قبلاً این عبارت را تکرار کرده ایم که "همه چیز در جاوا یک شی است". اما بدوی ها مستقیماً با این کلمات در تضاد هستند. آنها اشیاء نیستند بنابراین، آیا اصل "همه چیز یک شی" ما نادرست است؟ در واقع، اینطور نیست. در جاوا، هر نوع اولیه یک برادر دوقلو دارد، یک کلاس wrapper.

کلاس Wrapper چیست؟

Wrapper یک کلاس ویژه است که یک اولیه را در داخل ذخیره می کند. اما چون یک کلاس است، می توانید نمونه هایی از آن ایجاد کنید. آنها مقادیر اولیه را در داخل ذخیره می کنند، اما همچنان اشیاء واقعی هستند. نام‌های کلاس Wrapper بسیار شبیه (یا دقیقاً مشابه) نام‌های اولیه مربوط به خود هستند. بنابراین، آنها به راحتی قابل یادآوری هستند.
کلاس های Wrapper برای انواع داده های اولیه
انواع داده های اولیه کلاس های لفاف دار
بین المللی عدد صحیح
کوتاه کوتاه
طولانی طولانی
بایت بایت
شناور شناور
دو برابر دو برابر
کاراکتر شخصیت
بولی بولی
اشیاء Wrapper مانند هر شی دیگری ایجاد می شوند:
public static void main(String[] args) {

   Integer i = new Integer(682);

   Double d = new Double(2.33);

   Boolean b = new Boolean(false);
}
کلاس‌های Wrapper به ما اجازه می‌دهند کاستی‌های انواع اولیه را کاهش دهیم. واضح ترین آن این است که بدوی ها روشی ندارند. به عنوان مثال، آنها متد toString() ندارند ، بنابراین شما نمی توانید، برای مثال، یک int را به یک رشته تبدیل کنید . اما کلاس Wrapper Integer این کار را آسان می کند.
public static void main(String[] args) {

   Integer i = new Integer(432);

   String s = i.toString();
}
با این حال، تبدیل در جهت دیگر می تواند پیچیده تر باشد. فرض کنید یک رشته داریم که مطمئناً می دانیم که شامل یک عدد است. صرف نظر از این، هیچ راه بومی برای استفاده از int اولیه برای استخراج عدد از رشته و تبدیل آن به عدد وجود ندارد . اما، ما می توانیم با کلاس های wrapper.
public static void main(String[] args) {

   String s = "1166628";

   Integer i = Integer.parseInt(s);

   System.out.println(i);
}
خروجی:
1166628
ما با موفقیت یک عدد را از رشته استخراج کردیم و آن را به متغیر مرجع Integer i نسبت دادیم . ضمناً در مورد مراجع. قبلاً می‌دانید که آرگومان‌ها به روش‌های مختلف به روش‌ها منتقل می‌شوند: ابتدایی‌ها براساس مقدار، و اشیاء با مرجع. شما می توانید از این دانش هنگام ایجاد متدهای خود استفاده کنید: به عنوان مثال، اگر روش شما از اعداد کسری استفاده می کند اما برای عبور از طریق مرجع نیاز به منطق دارید، می توانید آرگومان های Double / Float را به جای double / float به متد ارسال کنید . علاوه بر روش‌های کلاس‌های wrapper، زمینه‌های استاتیک آنها نیز می‌تواند بسیار راحت باشد. برای مثال، تصور کنید که وظیفه زیر را دارید: نمایش حداکثر مقدار ممکن int و به دنبال آن حداقل مقدار ممکن. این مشکل نسبتاً اساسی به نظر می رسد. اما بدون گوگل، بعید است که بتوانید این کار را انجام دهید. اما لفاف‌ها به شما این امکان را می‌دهند که به راحتی چنین "وظایف پیش پا افتاده" را انجام دهید:
public class Main {
   public static void main(String[] args) {

       System.out.println(Integer.MAX_VALUE);
       System.out.println(Integer.MIN_VALUE);
   }
}
این زمینه ها شما را از انجام کارهای جدی تر منحرف می کنند. ناگفته نماند که تایپ 2147483647 (که اتفاقاً مقدار MAX_VALUE است) کار کوچکی نیست! :) همچنین در درس قبلی به این نکته اشاره کردیم که اجسام wrapper تغییرناپذیر هستند.
public static void main(String[] args) {

   Integer a = new Integer(0);
   Integer b = new Integer(0);

   b = a;
   a = 1;
   System.out.println(b);
}
خروجی:
0
وضعیت جسمی که در ابتدا توسط a به آن اشاره شده بود تغییر نکرد (زیرا مقدار b نیز تغییر می کرد). همانند String s، به جای تغییر وضعیت شیء wrapper، یک شی کاملاً جدید در حافظه ایجاد می شود. بنابراین، چرا سازندگان جاوا در نهایت تصمیم به ترک انواع اولیه در زبان گرفتند؟ از آنجایی که همه چیز باید یک شی باشد، و ما کلاس‌های wrapper داریم که می‌توانند هر چیزی را که اولیه‌ها بیان می‌کنند بیان کنند، چرا نه تنها wrapper‌ها را در زبان نگه داریم و ابتدایی‌ها را حذف نکنیم؟ پاسخ ساده است: عملکرد. انواع اولیه بدوی نامیده می شوند زیرا فاقد بسیاری از ویژگی های "سنگین" اشیاء هستند. بله، اشیا روش‌های راحت زیادی دارند، اما همیشه به آنها نیاز ندارید. گاهی اوقات تنها چیزی که نیاز دارید عدد 33 یا 2.62 یا true / false است . در شرایطی که مزایای اشیاء مهم نیست و برای عملکرد برنامه مورد نیاز نیست، اولیه‌ها به مراتب برای این کار مناسب‌تر هستند.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION