java工具类 ~ 包装类(包装类与基本数据类型的转换、基本数据类型与字符串之间的转换)

本文深入解析Java中包装类的作用及其实现机制,包括基本数据类型与包装类的转换过程,如装箱、拆箱,以及字符串与基本数据类型之间的转换。同时,探讨了包装类对象的初始化、比较和常量池的概念。

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

为什么要使用包装类??

java数据类型分为 基本数据类型、引用数据类型。其中基本数据类型是不具备对象的特征(不能像普通对象一样拥有属性和方法,并且不能进行对象化交互),因此包装类就是为了能让基本数据类型能够像对象一样 拥有属性、方法、以及可以对象化交互。(java包装类都是在java . lang包中的)

**包装类 与 基本数据类型 之间的对应关系**

 

 

public class WrapTest {
	public static void main(String[] args) {

		//装箱:把基本数据类型转换成包装类
		//1、自动装箱
		int t1=2;
		Integer t2=t1;//编译器,将t1中的数据提取出来,通过实例化的方式来构成t2对象。
		//2、手动装箱
		Integer t3=new Integer(t1);//通过new关键字,在构造函数中可以将t1的值传给t3.
		
		//测试
		System.out.println("int类型变量t1="+t1);
		System.out.println("Integer类型对象t2="+t2);
		System.out.println("Integer类型对象t3="+t3);//Integer对象直接调用toString返回t3的值
		System.out.println("*************************");


		//拆箱:把包装类转换成基本数据类型
		//1、自动拆箱
		int t4=t2;//编译器直接将t2对象中的值提取出来,赋值给t4
		//2、手动拆箱
		int t5=t2.intValue();//调用intValue()方法,将对象中的数据取出赋值给t5

		//测试
		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);
	}
}

【注意】:Boolean、Character包装类继承Object类,其余均继承Number类;

 

**基本数据类型 与 字符串(包装类) 之间的转换**

public class WrapTest {

	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);
		
	}
}

【补充知识】:

  • 包装类对象 的初始值;

       所有数据类型的包装类 初始值均为:null

  • 包装类对象 之间的比较;
public class WrapperTest {

	public static void main(String[] args) {

        //1、
		Integer one=new Integer(100);
		Integer two=new Integer(100);
		System.out.println("one==two的结果:"+(one==two));
		//false,“==”两边均为对象时,比较的是两个对象的引用(内存地址);
		
        //2、
		Integer three=100;//自动装箱,~~ 约等于操作:Integer three=Integer.valueOf(100);
		System.out.println("three==100的结果:"+(three==100));
		//true,这里完成的是 自动拆箱 操作,自动拆箱是取出其值然后比较;
		
        //3、
		Integer four=100;//自动装箱,创建第4个对象 
        //~~ 约等于操作:Integer four=Integer.valueOf(100);
		System.out.println("three==four的结果:"+(three==four));
		//true,java为了提高执行valueOf方法的效率,会自动提供一个常量数组的“缓存区(对象池)”,
		//当执行Integer.valueOf(100)方法时,-128<参数(100)<127时,直接从缓存区查找是否有符合的对象,
		//如果存在,则直接产生;如果没有,则通过new Integer(100)新生成一个对象

        //4、
		Integer five=200;
		System.out.println("five==200的结果:"+(five==200));//true
		
        //5、
		Integer six=200;
		System.out.println("five==six的结果:"+(five==six));//false,200已经超过了127,所以直接new一个新的对象
		
        //6、
		Double d1=Double.valueOf(100);
		System.out.println("d1==100的结果:"+(d1==100));//true,拆箱操作,比较的是数值
		
        //7、
		Double d2=Double.valueOf(100);
		System.out.println("d1==d2的结果:"+(d1==d2));//false,因为double、float不能应用常量池这个概念
	}
}

【注意】:除了float、double,其他都可以应用对象常量池概念;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值