English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
在本教程中,我们将借助示例学习Java 包装类(Wrapper)。
Java中的包装类用于将原始类型(int,char,float等)转换为相应的对象。
8个基本类型中的每一个都有对应的包装器类。
原始类型 | 包装类 |
---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
我们还可以使用valueOf()方法将原始类型转换为相应的对象。
class Main { public static void main(string[] args) { //创建原始类型 int a = 5; double b = 5.65; //转换为包装对象 Integer aObj = Integer.valueOf(a); double bObj = double.valueof(b); if(aObj instanceof integer) { system.out.println("إنشاء شيء Integer."); } if(bObj instanceof double) { system.out.println("إنشاء شيء Double."); } } }
نتيجة الإخراج
إنشاء شيء Integer. إنشاء شيء Double.
في المثال السابق، استخدمنا طريقة valueOf() لتحويل الأنواع الأساسية إلى الأشياء.
في هذا المكان، نستخدم عمليات التحقق عن النوع (instanceof) لتحديد ما إذا كان العنصر المولد ينتمي إلى نوع Integer أو Double.
لكن يمكن لمحول جافا تحويل الأنواع الأساسية مباشرة إلى الأشياء المناسبة. على سبيل المثال،
int a = 5; // تحويل إلى شيء integer aObj = a; double b = 5.6; // تحويل إلى شيء double bObj = b;
هذا العملية يُسمىالتعبئة التلقائية. للحصول على معلومات إضافية، يرجى زيارةJava Auto-boxing و Un-boxing.
الإشارةيمكننا أيضًا استخدام بناء الحزم (Wrapper) لتحويل الأنواع الأساسية إلى أشياء.لكن بعد جافا 9، لم يعد يستخدم بناء الحزم.
لتحويل الأشياء إلى الأنواع الأساسية، يمكننا استخدام طرق القيمة الموجودة في كل حزمة (intValue()، doubleValue()، إلخ).
class Main { public static void main(string[] args) { // إنشاء أعضاء الحزم integer aObj = integer.valueof(23); Double bObj = Double.valueOf(5.55); // تحويل إلى نوع أساسي int a = aObj.intvalue(); double b = bObj.doublevalue(); system.out.println("قيمة a: " + a); system.out.println("قيمة b: " + b); } }
نتيجة الإخراج
قيمة a: 23 قيمة b: 5.55
في المثال السابق، استخدمنا طرق intValue() وdoubleValue() لتحويل أشياء Integer وDouble إلى الأنواع الأساسية المناسبة.
لكن، يمكن لمحول جافا القيام بتحويل الأشياء تلقائيًا إلى الأنواع الأساسية المناسبة. على سبيل المثال،
integer aObj = integer.valueof(2); // Convert to int type int a = aObj; Double bObj = Double.valueOf(5.55); // Convert to double type double b = bObj;
هذا العملية يُسمىUn-boxing. للحصول على معلومات إضافية، يرجى زيارةJava Auto-boxing و Un-boxing.
في Java، قد نحتاج أحيانًا إلى استخدام كائن بدلاً من النوع البياني الأساسي. على سبيل المثال، عند استخدام المجموعات.
// Error ArrayList<int> list = new ArrayList<>(); // Run normally ArrayList<Integer> list = new ArrayList<>();
في هذه الحالة، يمكن للطبقات الحاملة مساعدتنا في استخدام أنواع البيانات الأساسية ككائنات.
يمكننا حفظ القيم الفارغة في كائنات الطبقة الحاملة. على سبيل المثال،
// Will generate an error int a = null; // Run normally Integer a = null;
الإشارةالنوع الأساسي أكثر فعالية من النوع الم对象ي. لذلك، عند الحاجة إلى الكفاءة، يُنصح دائمًا باستخدام الأنواع الأساسية.