Java包装类

本文介绍了Java中的包装类,包括它们如何解决基本数据类型在面向对象编程中的局限性,以及具体的用法示例,如类型转换、数值解析和字符串转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。

         包装类均位于java.lang包,包装类和基本数据类型的对应关系如下表所示:

包装类对应表

基本数据类型

包装类

byte

Byte

boolean

Boolean

short

Short

char

Character

int

Integer

long

Long

float

Float

double

Double

         在这八个类名中,除了IntegerCharacter类以后,其它六个类的类名和基本数据类型一直,只是类名的第一个字母大写即可。

         对于包装类说,这些类的用途主要包含两种:

                   a、作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。

                   b、包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

         由于八个包装类的使用比较类似,下面以最常用的Integer类为例子介绍包装类的实际使用。

         1、实现intInteger类之间的转换

在实际转换时,使用Integer类的构造方法和Integer类内部的intValue方法实现这些类型之间的相互转换,实现的代码如下:

                   int n = 10;

                   Integer in = new Integer(100);

                   //int类型转换为Integer类型

                   Integer in1 = new Integer(n);

                   //Integer类型的对象转换为int类型

                   int m = in.intValue();

         2Integer类内部的常用方法

                  Integer类内部包含了一些和int操作有关的方法,下面介绍一些比较常用的方法:

                   aparseInt方法

                            public static int parseInt(String s)

该方法的作用是将数字字符串转换为int数值。在以后的界面编程中,将字符串转换为对应的int数字是一种比较常见的操作。使用示例如下:

                                     String s = “123”;

                                     int n = Integer.parseInt(s);

int变量n的值是123,该方法实际上实现了字符串和int之间的转换,如果字符串都包含的不是都是数字字符,则程序执行将出现异常。(说明:异常的概念将在下一章进行讲述)

另外一个parseInt方法:

         public static int parseInt(String s, int radix)

则实现将字符串按照参数radix指定的进制转换为int,使用示例如下:

         //将字符串”120”按照十进制转换为int,则结果为120

         int n = Integer.parseInt(“120”,10);

         //将字符串”12”按照十六进制转换为int,则结果为18

         int n = Integer.parseInt(“12”,16);

         //将字符串”ff”按照十六进制转换为int,则结果为255

         int n = Integer.parseInt(“ff”,16);

这样可以实现更灵活的转换。

                   btoString方法

                            public static String toString(int i)

                            该方法的作用是将int类型转换为对应的String类型。

                            使用示例代码如下:

                                     int m = 1000;

                                     String s = Integer.toString(m);

                            则字符串s的值是”1000”

                            另外一个toString方法则实现将int值转换为特定进制的字符串:

                                     public static int parseInt(String s, int radix)

                            使用示例代码如下:

                                     int m = 20;

                                     String s = Integer.toString(m);

                            则字符串s的值是”14”

         其实,JDK自从1.5(5.0)版本以后,就引入了自动拆装箱的语法,也就是在进行基本数据类型和对应的包装类转换时,系统将自动进行,这将大大方便程序员的代码书写。使用示例代码如下:

                   //int类型会自动转换为Integer类型

                   int m = 12;

                   Integer in = m;

                   //Integer类型会自动转换为int类型

                   int n = in;

         所以在实际使用时的类型转换将变得很简单,系统将自动实现对应的转换。

### Java 包装详解 Java 中的包装(Wrapper Class)是用来将基本数据型(Primitive Data Type)转换为对象(Object)的一种机制。包装的作用是提供一种方式,使得基本数据型可以像对象一样被操作,例如存储在集合中或进行其他面向对象的操作。 #### 1. 基本数据型与包装的关系 Java 提供了八种基本数据型及其对应的包装[^2]: - **byte** ↔ **Byte** - **short** ↔ **Short** - **int** ↔ **Integer** - **long** ↔ **Long** - **float** ↔ **Float** - **double** ↔ **Double** - **char** ↔ **Character** - **boolean** ↔ **Boolean** 这些包装都位于 `java.lang` 包中,因此不需要显式导入即可使用。 #### 2. 包装的功能 包装的主要功能包括以下几点: - 将基本数据型转换为对象。 - 提供方法来操作和转换基本数据型。 - 提供静态方法将字符串转换为基本数据型。 #### 3. 基本数据型与包装之间的转换 ##### (1) 基本数据型 → 包装 可以通过构造方法或自动装箱(Autoboxing)实现基本数据型到包装的转换。例如: ```java // 使用构造方法 Integer integer = new Integer(100); // 已过时,不推荐使用 // 自动装箱 Integer integerAutoBoxed = 100; // 推荐使用 ``` ##### (2) 包装 → 基本数据型 可以通过调用包装的 `xxxValue()` 方法或自动拆箱(Unboxing)实现包装到基本数据型的转换。例如: ```java Integer integer = new Integer(100); int primitiveInt = integer.intValue(); // 调用intValue()方法 int autoUnboxedInt = integer; // 自动拆箱 ``` #### 4. 包装与字符串的相互转换 ##### (1) 包装 → 字符串 可以通过 `String.valueOf()` 方法将包装转换为字符串。例如: ```java Integer integer = 100; String str = String.valueOf(integer); // 使用String的静态方法 ``` ##### (2) 字符串 → 包装 可以通过包装的 `parseXxx(String s)` 静态方法将字符串转换为包装。例如: ```java String str = "100"; int primitiveInt = Integer.parseInt(str); // 转换为基本数据型 Integer wrapperInt = Integer.valueOf(str); // 转换为包装 ``` #### 5. 包装的常用方法 以下是一些常用的包装方法: - **`compareTo()`**:用于比较两个对象的大小。 - **`equals()`**:用于判断两个对象是否相等。 - **`toString()`**:返回对象的字符串表示形式。 - **`hashCode()`**:返回对象的哈希码值。 #### 6. 注意事项 - **自动装箱与拆箱**:从 Java 5 开始支持自动装箱和拆箱,简化了代码编写,但需要注意潜在的性能问题。 - **缓存机制**:某些包装(如 `Integer`、`Boolean` 等)实现了缓存机制,避免频繁创建新对象。例如,`Integer` 在 -128 到 127 之间的值会被缓存[^1]。 - **空指针异常**:在使用自动拆箱时,如果包装对象为 `null`,会导致 `NullPointerException`。 ```java Integer a = null; int b = a; // 抛出NullPointerException ``` #### 7. 示例代码 以下是一个综合示例,展示如何使用包装进行型转换: ```java public class WrapperClassExample { public static void main(String[] args) { // 基本数据型转包装 Integer integer = Integer.valueOf(100); // 显式转换 Integer autoBoxed = 100; // 自动装箱 // 包装转基本数据型 int primitiveInt = integer.intValue(); // 显式转换 int autoUnboxed = integer; // 自动拆箱 // 包装转字符串 String str = String.valueOf(integer); // 字符串转包装 String strValue = "200"; Integer parsedInteger = Integer.valueOf(strValue); System.out.println("integer: " + integer); System.out.println("primitiveInt: " + primitiveInt); System.out.println("str: " + str); System.out.println("parsedInteger: " + parsedInteger); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值