每种编程语言最重要的基础是它的数据类型,它是每个初学者学习的最重要的元素。数据类型表示它存储的值的类型、字符和操作集。Java 数据类型在各个方面都很有用,无论是创建小程序还是构建任何应用程序或软件。
在 Java 中,数据类型分为两种类型:原始数据类型和非原始数据类型。原始数据类型是预先指定的,而非原始数据类型是由程序员而不是 Java 定义的。为了提供一些附加功能并使应用程序不复杂,Java 中引入了 Wrapper 类的概念。
让我们更详细地了解Java中的Wrapper类。
什么是包装类?
包装器类是预定义的类,可将接收到的字符串数值转换为原始数据类型,反之亦然。它们用于 Java。jre/lib/rt.jar 文件默认包含一个包装类,是 Java 库的一部分。在 Java 中为包装类构造对象时,它有一个字段,我们可以在其中放置原始数据类型。
理解包装类的程序:
让我们通过这个程序来了解 Java 包装器类:
输出:
12
12.0
错误的
注意Wrapper类只支持字符串数值,Boolean wrapper类是Java 1.5新增的。
下面是Java中一些相当于基本数据类型的包装类:
Java 包装类的特性
下面提到了 Java 包装类的一些关键功能:
函数中的值修改
Java 编程中的“按值调用”功能使我们能够通过使用从原始数据类型修改的对象来修改传递给方法的参数。如果参数不是常数并且需要修改,我们可以传输对象并修改值。
同步化
需要一个对象来允许 Java 同步。它使用多线程作用于对象,对象是多线程中识别块所必需的。
Java中的synchronized关键字用于标识同步块。对象与此 J??ava 块同步。同一对象的同步块一次只能激活一个流。在块内的流离开之前,所有其他想要进入它的进程都将停止。
连载
该对象在流内部进行转换以执行序列化。Java 中的包装类用于重新生成对象。对象的类必须直接或间接实现 Serializable 接口。
Java.util 包
Java.util 包的包装器类支持实用程序类,这些类用于处理对象。
集合框架
ArrayList、Vector、HashSet、LinkedList 和 Java 中的其他框架集合类仅存储对象。这些对象很有用,因为它们是包装类的实例。
Java 中包装类支持的方法
下面列出了Java 中包装类支持的方法:
为什么我们需要 Java 中的包装器类?
当使用基本类型作为对象时,可以使用Java 中的包装类。此外,包装器类具有解包对象和返回数据类型的方法。
这些类只处理 Java.util 包中的对象。在这种情况下,包装类就派上用场了。
在 Collection 框架中,像 ArrayList 这样的数据结构只保存对象,不保存基本类型。
在 Java 中,包装类用于支持对象,例如来自其他类型的转换。
包装器类对于多线程同步很有用。同步机制将共享资源的使用一次限制为一个线程。为此,包装类对象是必需的。
在 Java 中实现包装器类
实现包装类很简单。首先,创建一个扩展所需包装器类的新类。例如,如果您想环绕一个 InputStream,您的新类将扩展 Java.io.InputStream。接下来,为需要存储的任何数据向新类添加字段。最后,根据需要实现包装类的方法。例如,如果您希望包装类支持从底层流中读取数据,则需要实现 InputStream 的 read() 方法。
当您需要使用低级语言但又想利用 Java 的高级功能时,包装类会非常有用。通过创建包装器类,您可以避免编写复杂的 JNI 代码,并且仍然可以获得使用 Java 的所有好处。
Java 中实现Wrapper Class 的两种方法:
自动装箱
开箱
自动装箱
当 Java 编译器自动将原始数据类型转换为它们在 Java 中对应的包装类的对象时,这称为自动装箱。例如,将 int 更改为整数、将 char 更改为 char、将 double 更改为 double 等。
在以下情况下,Java 编译器会自动装箱原始值:
参数被传递给需要相关包装类对象的方法。
分配给匹配的包装器类变量。
输出:
100
100
100
解释:
在这种情况下,总输出为 100,如下所示:
int 值 100 分配给 B 变量。
初始变量被提供为 B 的值 100。只有在这种情况下,原始数据类型 int 才显式更改为 Integer。
第二个将同样具有值 100,因为自动装箱允许编译器隐式执行转换。
开箱
它与自动装箱方法正好相反。拆箱是将包装类对象还原为其相应原始值的过程。
当包装器类是:
当作为参数传递给采用原始类型值的方法时
分配给原始类型对应的变量
输出:
10
10
10
解释:
在这里,所有查询的输出都是 10:
对象 B 是通过向 Integer 提供值 10 来构造的。
第一个变量被赋予值 B.intValue()。因为 B 的值为 10,所以第一个的值也将为 10。
第二个变量是直接分配的。由于拆箱,编译器分配了 B 的整数值,即 10 到秒。
包装类的好处
包装类有多种好处。下面列出了关键的:
Java 中的包装器类包括许多处理集合的方法,例如排序和搜索。
我们可以利用包装器类对象并将它们保存为空值。
包装器类型允许原语执行更复杂的操作。整数可以以多种方式使用它,例如名为 Hours 的类,它会在使用数字的任何地方显示它的值。
原始类型只对值有效;包装器类为它们命名。
包装器对象是具有空引用的自然对象。这允许使用“未设置”状态,这对于基元来说很难做到。
指针是诸如整数和字符之类的对象。以字节为单位的变量值表示内存地址。它们是指向内存地址的指针。结果,该号码可以分配给一个无处可寻的地址。
原始数据类型,如 char 或 int,包括只能作为数字(ASCII 代码或整数)处理的数字,因为内存只能容纳数字。
包装器类允许以不同方式使用原始数据类型。整数可以以多种方式使用此数据类型。例如,“小时”类将始终在应用的任何地方表示数字。
基本类型只返回值,而包装类返回一个名称。例如,int as Integer 表示只有整数提供值的类型和范围。但是,通过使用包装类“Integer”,为对象提供了一个引用名称。
所有数字包装类,包括 Int、Byte、Short、Double、Long 和 Float,都是抽象类 Number 的子类。
结论 Java 中的包装器类是所有方法调用的基础。它还使 Java 能够修改基本数据类型而不影响它们的值。在 Java 程序中练习越来越多的包装类,以了解 Java 中的包装类。对这些概念的深入理解无疑会对你的发展道路有很大帮助。对于编程知识和更多关于软件开发的阅读材料,UNext是您正确的选择。