首页 >Java >java教程 >Java 中的包装类

Java 中的包装类

王林
王林原创
2024-08-30 16:00:11751浏览

Wrapper类是java.lang库中的一个重要类。包装类对象为原始数据类型创建包装器。创建包装类的对象时,会在存储原始数据类型的内存中创建空间。包装类提供了一些用于将对象转换为原始数据以及将原始数据转换为对象的功能,即装箱/拆箱。从对象到原始数据以及原始数据到对象的转换是自动发生的。原始数据类型是指int、float、char、double、byte等

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

语法:

下面给出的声明显示了 Wrapper 类如何在 java 程序中工作。

示例:

int i = 100;

在下面给出的示例中,我们可以看到 i 是整数数据类型。有时在java中整数需要作为对象类型传递。在这种情况下,我们可以使用包装类将整数转换为对象。

代码:

Integer intVal = new Integer(i);

在上面给出的语法中,我们可以看到如何使用 Integer 类对象将原始数据类型转换为对象。另外,我们可以说原始数据类型被包装为对象。

Java 中包装类的使用

下面给出了包装类的一些用法:

  • 包装类可用于将对象转换为原始数据类型,反之亦然。
  • 包装类的使用提高了程序的性能。
  • 包装类有助于对象的序列化,反之亦然。它可以将原始数据转换为对象。有时我们需要流式传输对象;在这种情况下,包装类可以将它们转换为序列化格式。
  • 包装类提供了一些重要的方法,用于在集合中执行搜索和排序。
  • 减法&加法,这些类型的操作不能修改Wrapper类原始整数的旧值;这就是为什么 Wrapper 类被称为不可变的。
  • 包装类用于多线程进程,因为多线程进程需要一个对象来同步进程。包装类将不同的数据类型转换为对象。

在JavaAPI的基础上,Wrapper类层次结构将Object保持在不同原始类的顶部。数字、字符和布尔值位于对象之后的第二层。 Byte、Short、Int、Long、Float、Double 属于第三级 Number 数据类型。

包装类使用以下两种机制自动装箱和拆箱,用于数据类型的转换/包装或将对象转换为原始数据类型。

  • 自动装箱:自动装箱是指使用包装类将原始数据类型自动转换为对象。它被称为自动装箱。在下面给出的示例中,int 转换为 Integer 对象,在示例 c 中,不同的原始数据类型被转换为相应的对象。
  • 拆箱:拆箱是自动装箱的逆过程。自动将包装类对象转换为相应的原始数据类型称为拆箱。在下面给出的示例 b 中,Integer 对象被转换为 int 原始数据类型。

Java 中的包装类示例

下面是 Java 中包装类的不同示例:

示例#1

在下面给出的示例中,我们可以看到如何通过包装类从 int i 手动转换为对象 k。

代码:

import java.util.*;
class WrapperExample {
public static void main(String args[]){
int j=100;
//converting int j to integer k as an object
Integer k = new Integer(j);
System.out.println(j + "\n" + k);
}
}

输出:

Java 中的包装类

在上面给出的示例中,我们可以看到转换是如何显式进行的。

示例#2

在下面给出的示例中,我们可以看到此转换过程有时会自动发生,即称为自动装箱。

代码:

import java.util.*;
class AutoboxingUnboxingExample {
public static void main(String args[]){
int j = 500;
ArrayList<Integer> arrValues = new ArrayList();
arrValues.add(j);  // autoboxing takes place implicitly
System.out.println(arrValues.get(0));
}
}

输出:

Java 中的包装类

在上面给出的示例中,int 值作为对象隐式转换为对象。另外,这个值可以从ArrayList中获取。

示例 #3

在这个例子中,我们将完成拆箱的实现。拆箱是自动装箱的逆过程。

代码:

import java.util.*;
class AutoboxingUnboxingExample {
public static void main(String args[]){
ArrayList<Integer> arrValues = new ArrayList();
arrValues.add(250);
//unboxing here as int data type from Integer object
int k = arrValues.get(0);
//value printed is in primitive data type
System.out.println(k);
}
}

输出:

Java 中的包装类

在上面给出的示例中,ArrayList 对象字段被转换为 k 基本数据类型,即 int k。

Example #4

The following given example have all the details of Autoboxing & Unboxing.

Code:

import java.util.*;
class WrapperConversionExample {
public static void main(String args[]){
int i = 15;
float j = 9.6f;
double k = 120.8;
byte l = 1;
//creating instance of Integer object
Integer iObj = new Integer(i);
//creating instance of Float object
Float fObj = new Float(j);
//creating instance of Double object
Double dObj = new Double(k);
//creating instance of Double object
Byte bObj = new Byte(l);
//value printed is in object
System.out.println("Value as an Integer object > " + iObj);
System.out.println("Value as a Float object > " + fObj);
System.out.println("Value as a Double object > " + dObj);
System.out.println("Value as a Byte object > " + bObj);
//primitive data type from the object
int m = iObj;
float n = fObj;
double o = dObj;
byte p = bObj;
//value printed is in primitive data type
System.out.println("Value as an int primitive type > " + m);
System.out.println("Value as a float primitive type > " + n);
System.out.println("Value as a double primitive type > "+ o);
System.out.println("Value as a byte primitive type > " + p);
}
}

Output:

Java 中的包装类

In the above-given program, we can see the implementation of Wrapper classes. Wrapper classes are converting the primitive data type to object & object to the primitive data type. The wrapper class provides separate classes for each primitive data type.

Conclusion

Through the Wrapper classes, we can easily understand autoboxing & unboxing how conversion takes place from primitive to object & its vice versa, which can be easily understood through Wrapper classes. For each of the primitive data types, there is a dedicated class in java.

以上是Java 中的包装类的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn