irlogcat / Android-FAQ

Android - Frequently Asked Question
48 stars 3 forks source link

‫منظوز از Autoboxing و Unboxing چیست ؟ #163

Open FatemehKavoosi opened 4 years ago

abbas-oveissi commented 4 years ago
زمانی که کامپایلر جاوا بصورت خودکار یه primitive type رو به کلاس متناظرش تبدیل میکنه، autoboxing میگن. بطور مثال تبدیل int به Integer و double به Double رو autoboxing میگن. توی کد زیر کامپایلر بجای اینکه خطا بده متغیر i از نوع int هست و نمیشه توی لیستی از integerها اضافش کرد، خود عمل autoboxing رو انجام میده و بعد توی لیست اضافش میکنه.
```java List li = new ArrayList<>(); for (int i = 1; i < 50; i += 2) li.add(i); ```
به برعکس تبدیل قبلی که گفته شد هم unboxing میگن. یعنی یه Integer تبدیل به int بشه. این autoboxing و unboxing کمک میکنه که دولوپر کد تمیزتر و با قابلیت خوانایی بالاتری بنویسه. فقط باید به این نکته دقت کرد که این عمل اگر خیلی زیاد تکرار بشه از لحاظ پرفورمنسی خوب نیست و اگر میشه باید جوری کد رو بنویسیم که نیاز به این عمل نباشه. اگر نمیدونید کلاس‌های متناظر primitive typeها چی هستند، میتونید از جدول زیر کمک بگیرید.
| Primitive Type | Wrapper Class | |----------------|---------------| | boolean | Boolean | | byte | Byte | | char | Character | | float | Float | | int | Integer | | long | Long | | short | Short | | double | Double |