基本数据类型与其包装类的类型转换

一、Integer和int的类型转换

注: java中的自动拆箱、自动装箱机制会对基本类型和它们对应的包装类进行自动转换,所以不需要刻意人为去转换。这是只是介绍一下以下的两种方法】

5.1 int转为Integer:valueOf()

Integer a1 = Integer.valueOf(100);

valueOf()中的参数也可以为String,但同样的,也必须为纯数字。

5.2 Integer转为int:intValue()

Integer a1 = 100;
int a2 = a1.intValue();

intValue()是java.lang.Number类的方法,Number是一个抽象类, Java中所有的数值类都继承它。也就是说,不单是Integer有intValue方法,Double,Long等都有此方法。
此方法的意思是:输出int数据。

二、自动装箱、自动拆箱介绍

  • 概念: 自动装箱指的是基本数据类型赋值给其对应的包装类引用类型时,基本数据类型会自动装箱为引用类型;自动拆箱指的是包装类引用类型自动拆箱为对应的数值类型。
  • 发生场所: 赋值、比较。
  • 代码应用:
public void Integer_int() {
		int a0 = 10;
		int a1 = 10;
		Integer n1 = 10; //赋值时自动装箱,将数值10封装为对象
		Integer n2 = 10;
		Integer n3 = new Integer(10);
		Integer n4 = new Integer(10);
		Integer n5 = 199;
		Integer n6 = 199;
		
		System.out.println(a0 == a1); //true 比较值
		System.out.println(a0 == n1); //true 引用和数值比较时,引用自动拆箱为数值,进行数值之间的比较
		System.out.println(a0 == n3); //true n3自动拆箱后数值为10
		System.out.println(n1 == n2); //true 10在常量池存在,n1、n2指向同一个地址
		System.out.println(n1 == n3); //false new的
		System.out.println(n3 == n4); //fasle new的
		System.out.println(n5 == n6); //fasle 超出常量池范围,直接new新的对象
}

三、自动装箱、自动拆箱应用

public void testbyte() {
		Byte a = 123; // 自动装箱,将123自动装箱为引用类型,赋值给a
		Byte c = a; // a、c同为引用类型,指向同一个堆的值
		System.out.println(c == a); // true c、a同为引用,比较的是两个引用的地址
		a++;
		// 相当于:
		// byte a = 123; 拆箱:将a这个引用类型拆箱为byte基本数据
		// a++; a自身加1(++本身相当于赋值)
		// Byte a1 = a; 装箱:此时a为byte,需要将其装箱为Byte类型
		System.out.println(c == a); // 比较地址,但是a的指向已改变
	}

输出

true
false

自动拆箱相当于把123对象中的数值123取出来复制给基本数据类型变量上的过程,所以c还是指向原来的123对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值