Java面向对象-包装类

本文深入讲解Java中的包装类,包括基本数据类型与包装类的对应关系,如byte与Byte、int与Integer等。探讨装箱与拆箱的概念及其实现方式,自动装箱和拆箱的系统自动转换过程。此外,还介绍了包装类的重要作用,例如通过调用Integer类的valueOf和parseInt方法将字符串转换为整数,实现字符串数据的相加运算。

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

包装类:将基本数据类型装换成对象,(位于java.lang包中,系统自动导入)

每个基本类型都有一个对应的类;就是所谓的包装类
byte ------> Byte
short------> Short
int ---------> Integer
long-------> Long
char-------> Character
boolean------> Boolean
float---------> Float
double------> Double

1.装箱和拆箱
装箱:基本类型—>类类型
拆箱:类类型—>基本类型

public class test5 {
	public static void main(String[] args) {
		int a=1;
		Integer b=new Integer(a);//装箱
		int c=b.intValue();//拆箱
		
		System.out.println("a="+a);
		System.out.println("b="+b);
		System.out.println("c="+c);
	}
}

运行结果
在这里插入图片描述
2.自动装箱和拆箱
系统自动转换

public class test6 {
	public static void main(String[] args) {
		Integer a=1;//自动装箱
		int b=a;//自动拆箱
		
		System.out.println("a="+a);
		System.out.println("b="+b);
		
	}
}

运行结果
在这里插入图片描述
3.包装类的作用
因为包装类是类类型, jdk里提供很多有用的方法给我们使用;
比如从用户界面来两个字符串数据a,b 然后我们程序里要进行相加运算。这时候包装类就派上用场了

public class test7 {
	public static void main(String[] args) {
		String a="3";
		String b="6";
		
		int m=Integer.valueOf(a);//调用Integer类的valueOf方法 把字符串类型转换成int类型
		int n=Integer.parseInt(b);//调用Integer类的parseInt方法 把字符串类型转换成int类型
		System.out.println("a+b="+(m+n));
	}
}

运行结果
在这里插入图片描述
:Integer.MAX_VALUE获取int的最大值

### Java 面向对象编程中的包装 #### 包装的概念 Java 中的包装(Wrapper Class)是用来将基本数据型封装成对象的一组。这些位于 `java.lang` 包中,允许开发者在需要时将基本数据型转换为对象以便于操作[^1]。 以下是常见的基本数据型及其对应的包装: | **基本数据型** | **包装** | |-------------------|------------------| | byte | Byte | | short | Short | | int | Integer | | long | Long | | float | Float | | double | Double | | char | Character | | boolean | Boolean | #### 包装的作用 包装的主要目的是为了能够将基本数据型作为对象来处理。这使得它们可以在集合框架(Collections Framework)和其他需要对象参数的地方使用。此外,包装还提供了一些有用的工具方法,方便数值的操作和转换[^2]。 #### 自动装箱与拆箱 自 Java 5 开始引入了自动装箱(Autoboxing)和自动拆箱(Unboxing)机制,简化了基本数据型与其对应包装之间的转换过程。 - **自动装箱** 是指编译器会隐式地将基本数据型转换为其对应的包装- **自动拆箱** 则是指编译器会隐式地将包装转换回其对应的基本数据型。 ##### 示例代码 ```java Integer num = 10; // 自动装箱 int value = num; // 自动拆箱 ``` #### 包装的实现原理 包装本质上是对基本数据型的封装。例如,`Integer` 内部维护了一个名为 `value` 的私有成员变量,用来存储实际的整数值。通过 getter 方法可以获取该值。 ##### 示例代码 ```java public final class Integer { private final int value; public Integer(int value) { this.value = value; } public int intValue() { return value; } } ``` 当调用 `new Integer(10)` 创建对象时,实际上是在内存中分配了一块空间并初始化了 `value` 成员变量。而自动装箱则是由 JVM 在后台完成这一过程,无需显式调用构造函数[^3]。 #### 常见用途 1. **集合框架支持**: 许多集合(如 ArrayList、HashSet 等)只接受对象作为元素,因此需要用包装代替基本数据型。 2. **线程安全需求**: 某些场景下可能需要对共享的数据进行同步控制,此时包装提供了更好的解决方案。 3. **方法重载区分**: 不同签名的方法可以通过接收不同型的包装来进行区分。 4. **默认值设置**: 对象可以赋值为 null,而基本数据型不具备此特性。 #### 性能考虑 尽管包装带来了便利性,在性能敏感的应用程序中应谨慎使用。因为每次装箱/拆箱都会涉及额外开销,并可能导致不必要的临时对象创建。对于循环体内的频繁运算尤其需要注意这一点[^4]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值