java入门-----包装类

java入门-----包装类

含义:基本数据类型对应的类

出现原因:Java为纯面向对象语言(万物皆对象),而八种基本数据类型不能创建对象,破坏了java为纯面向对象语言的特征,所有java又给这八种基本数据类型分别匹配了对应的类;叫包装类/封装类

继承关系:

基本数据类型引用数据类型
byteByte extends Number extends Object
shortShort extends Number extends Object
intInteger extends Number extends Object
longLong extends Number extends Object
floatFloat extends Number extends Object
doubleDouble extends Number extends Object
charCharacter extends Object
booleanBoolean extends Object

注意:1.数值型都继承Number

​ 2.int型的包装类Integer

​ 3.char的包装类Character

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

int i = 100;
Integer integer = Integer.valueOf(i);//装箱
System.out.println(integer);

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

Integer integer = new Integer(100);
int i = integer.intvalue();//拆箱
System.out.println(i);

JDK1.5新特性:自动装箱、自动拆箱

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

int i = 100;
Integer integer = i;//自动装箱(底层实现:Integer.valueOf(i);)
System.out.println(integer);

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

Integer integer = new Integer(100);
int i = integer;//自动拆箱(底层实现:integer.intValue();)
System.out.println(i);

应用场景:集合(类似数组的容器),但是集合只能存引用数据类型,如果想存储基本数据类型,就可以把基本数据类型转换为对应的包装类对象

需求:把字符串数组{“1”,“2”,“3”,“4”,“5”}转换为int数组

public class Test02 {
	public static void main(String[] args) {
		String[] ss = {"1","2","3","4","5"};
		int[] is = new int[ss.length];
		for (int i = 0; i < is.length; i++) {
			//1.将String转换为Integer对象
			//2.Integer对象自动拆箱成int数据
			int num = Integer.valueOf(ss[i]);
			is[i] = num;
		}
		for (int element : is) {
			System.out.println(element);
		}
	}
}
1
2
3
4
5

深入包装类底层源码

Integer底层有个缓存类,缓存类中有个数组,存储了-128127的Integer对Integer.valueOf(num)底层会判断num是否在-128127这个区间,如果在内就从缓存数组中获取数据,如果不在这个区间就new对象

Integer integer1 = Integer.valueOf(100);
Integer integer2 = Integer.valueOf(100);
System.out.println(integer1 == integer2);//true

Integer integer3 = Integer.valueOf(200);
Integer integer4 = Integer.valueOf(200);
System.out.println(integer3 == integer4);//false
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值