Java包装类

本文详细介绍了Java中的包装类,包括其用途、与基本数据类型的关系,以及如何进行基本类型和包装类型的转换。重点讲解了包装类对象的初始值、比较以及装箱与拆箱的概念。通过实例演示了包装类在实际编程中的使用技巧。

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

Java包装类

知识点:

  1. 什么是包装类
  2. 包装类与基本数据类型之间的对应关系
  3. 包装类的常用方法

JAVA中的数据类型

在这里插入图片描述
为什么需要包装类?因为上述数据类型不能喝对象一样拥有属性、方法、以及对象化的进行交互,那么包装类的产生就是为了解决这种问题。

包装类与基本数据类型

在这里插入图片描述
大部分的包装类和基本数据类型基本相同,只有int-Integer,char-Character,变化较大。

基本数据类类型和字符串之间的转换

public class WrapTestTwo {
	public static void main(String[] args) {
		// 基本数据类型转换为字符串
		int t1 = 2;
		String t2 = Integer.toString(t1);
		// 测试
		System.out.println("int类型转换为String类型对象t2=" + t2);
		System.out.println("***************************");
		//字符串转换为基本数据类型
		//1、包装类的parse
		int t3 = Integer.parseInt(t2);
		//2、包装类的valueOf 先将字符串转换为包装类,再通过自动拆箱完成基本类型转换
		int t4 = Integer.valueOf(t2);
		// 测试
		System.out.println("String类型转换为int类型变量t3=" + t3);
		System.out.println("String类型转换为int类型变量t4=" + t4);
		
	}
}

需要知道的几点知识点

基本数据类型的初始化

在这里插入图片描述

包装类对象的初始值

思考:
定义了一个Integer类型对象one,他的初始值是不是也等于0呢?

package wrap;

public class Cat {
	//成员属性
	String name;
	int month;
	double weight;
}
package wrap;

public class CatTest {
	public static void main(String[] args) {
		//实例化对象
		Cat one = new Cat();
		//测试输出
		System.out.println("小猫的昵称:" + one.name);
		System.out.println("小猫的年龄:" + one.month);
		System.out.println("小猫的体重:" + one.weight);
	}
}

输出结果
小猫的昵称: null
小猫的年龄: 0
小猫的体重: 0.0

那如果我将年龄的属性改为Integer,double改为Double还会是一样的结果吗?

package wrap;

public class Cat {
	//成员属性
	String name;
	Integer month;
	Double weight;
}

再重新运行CatTest类,发现结果为:
小猫的昵称:null
小猫的年龄:null
小猫的体重:null

包装类对象间的比较
public static void main(String[] args){
	
	// one这个值是新开的一个空间,里面存放的值是100
	Integer one = new Integer(100);
	// two这个值也是新开的一个空间,里面存放的值是100
	Integer two = new Integer(100);
	System.out.println("one==two的结果:" +(one==two));
	
	Integer three = 100;//自动装箱
	//Integer three = Integer.valueOf(100);
	System.out.println("three==100结果:" +(three==100));//自动拆箱
	
	Integer four = 100;
	System.out.println("three==four的结果:" + (three==four)); 

	Integer five = 200;
	System.out.println("five==200的结果:" + (five==200));

	Integer six = 200;
	System.out.println("five==six的结果:" + (five==six));

	Double d1 = Double.valueOf(100);
	System.out.println("d1==100的结果:" + (d1==100));
	
	Double d2 = Double.valueOf(100);
	System.out.println("d1==d2的结果:" + (d1==d2));
}

结果:
one==two的结果:false
three==100的结果:true
three==four的结果:true
five==200的结果:true
five==six的结果:false
d1==100的结果:true
d1==d2的结果:false

其实java在自动拆装箱的时候,其实就是执行了这个方法
Integer four = Integer.valueOf(100);

在这里插入图片描述
在装箱的时候其实就是将实例化放入到了缓冲区,指向了同一空间,所以three==four为true。

还有特别重要的一点就是,我们的数值必须在-128~127之间。不然不会实例化。

在这里插入图片描述
在我们Java数据类型里面,除了我们的float和double,其他的都可以应用对象常量池概念的。

装箱和拆箱的理解

装箱:基本数据类型 -> 包装类
拆箱:包装类 -> 基本数据类型

public class WrapTestOne {

	public static void main(String[] args) {
		//装箱:把基本数据类型转换成包装类
		//1、自动装箱
		int t1 = 2;
		Integer t2 = t1;
		//2、手动装箱
		Integer t3 = new Integer(t1);

		//测试
		System.out.println("int类型变量t1="+t1);
		System.out.println("Integer类型对象t2="+t2);
		System.out.println("Integer类型对象t3="+t3);
		System.out.println("**************************");
		//拆箱:把包装类转换成基本数据类型
		//1、自动拆箱
		int t4=t2;
		//2、手动拆箱
		int t5=t2.intValue();
		//测试
		System.out.println("Integer类型对象t2="+t2);
		System.out.println("自动拆箱后,int类型变量t4="+t4);
		System.out.println("手动拆箱后,int类型变量t5="+t5);
		double t6=t2.doubleValue();
		System.out.println("手动拆箱后,double类型变量t6="+t6);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值