包装类

包装类

什么是包装类?

  • 基本数据类型所对应的引用数据类型。
  • Object可统一所有数据,包装类的默认值null。
  • 包装类中实际上就是持有了一个基本类型的属性,作为数据的存储空间(Byte中有一个byte属性),还提供了常用的转型方法,以及常量,既可以存储值,又具备了一系列的转型方法和常用常量,比直接使用基本类型的功能更强大。
  • 包装类中提供了若干转型的方法,可以让自身类型与其他包装类型、基本类型、字符串相互之间进行转换。
public class TestEncapsulation {
	public static void main(String[] args) {
		
		Byte b1 = new Byte((byte)10);//基于基本类型byte进行构建
		
		Byte b2 = new Byte("20");//基于字符串进行构建
		
		
		System.out.println(b1.byteValue());
		System.out.println(b1.doubleValue());
		
		Short s2 = new Short("12");
		System.out.println(s2.byteValue());
		System.out.println(Short.MAX_VALUE);
	}
}

转换方法

  • 8种包装类型中,有6种是数字型,继承来自java.lang.Number父类。
  • java.lang.Number父类为所有子类分别提供了6个转型方法,将自身类型转换为其他数字型。

在这里插入图片描述

  • parseXxx(String s)静态转型方法:7种包装类型都有,除了Character,都可以通过String进行构建。
	//parseXxx静态方法(8种包装类型)
		byte b3 = Byte.parseByte("123");//兼容类型
		//byte b4 = Byte.parseByte("abc");
		/*Exception in thread "main" java.lang.NumberFormatException*/
		System.out.println(b3);
		//System.out.println(b4);
  • valueOf(基本类型)、valueOf(字符串类型),静态转型方式,8种包装类型都有。
		Byte b1 = Byte.valueOf((byte)10);
		Byte b2 = Byte.valueOf("20");
  • 注意:在使用字符串构建包装类型对象时,要保证类型的兼容,否则产生NumberFormatException。

装箱、拆箱

  • JDK5之后,提供自动装箱、拆箱,简化使用包装类的编程过程。
  • 自动装箱,将基本类型直接赋值给包装类型。
  • 自动拆箱,将包装类型的值,直接赋值给基本类型。
		//JDK5以后,自动装箱,拆箱
		Byte b4 =40;  //将基本类型直接赋值给包装类型,调用valueOf
		byte b5 = b4;  //自动拆箱,将包装类型的值,直接赋值给基本类型,调用byteValue

整数缓冲区

  • Java预先创建了256个常用的整数包装类型对象。
  • 在实际应用当中,对已创建的对象进行复用。
  • 自动装箱时,会调用valueOf方法,整数会提供对应缓冲区,将常用的256个数字提前创建对象并保存在数组中,实现复用,即在区间内复用已有对象,在区间外创建新对象。
public class TestCache {
	public static void main(String[] args) {
		//Byte、Short、Integer、Long 四种整数包装类型都提供了对应的cache缓冲区,提前创建了256个常用对象
		//缓冲
		Short s1 = 100;//调用valueOf(100),进行区间的判断(-128~127),满足区间条件,将一个数组中的Short对象进行返回
		Short s2 = 100;
		
		Short s3 = 200;
		Short s4 = 200;
		
		System.out.println(s1 == s2);//true
		System.out.println(s3 == s4);//false
		
		System.out.println(s1.equals(s2));//true//判断内容,覆盖了父类的Object equals(this == obj)
		System.out.println(s3.equals(s4));//true
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值