java 的包装类

目录

包装类的意义

包装类

每个基本数据类型都有对应的包装类

基本数据类型和包装之间的关系:

装箱:

拆箱:

例程:

 

1.one == two 【false】 对象vs对象 判断【两个引用】(地址)是否一致 ,one和two都是100,但用了两个new就是申请了两个不同的地址.

2. 2.java为了提高执行效率,在valuof()方法执行的过程中,提供了一个类似常量数组的缓存区(对象池),当Integer  four = 100,第二次使用valueof()执行的过程中,传入的参数在[-127,127]之间时,则直接使用缓存区中的值,不生成新的实例化对象,及three和four指向同一块内存,所以three == four;返回值为true,如果不在[-128,127]之间则会隐式的调用new来实例化一个Integer类型,所以five == six 返回值为false(开辟新的内存空间)


包装类的意义

包装类的意义:java中有8个基本类型,他们是以值的形式存在内存中,而不是对象。更不是object的子类,不能参与面向对象的开发。若想让基本类型参与面向对象的开发,就需要包装类。
包装类是不可变类,在构造了包装类对象后,不允许更改包装类在其中的值

包装类

每个基本数据类型都有对应的包装类

java中所有的包装类都存放在java.lang包中

java 中的包装类都是用final声明的,所以都不能被继承,且实现了Comparable方法,除了字符型和布尔型都继承至numberl类

基本数据类型和包装之间的关系:

 

 

装箱:基础数据类型转换为包装类;分为手动装箱和自动装箱
1.自动装箱:声明基础数据类型变量并赋值给声明的包装类变量;
2.手动装箱:实例化包装类,其构造方法传入基础数据类型变量;
拆箱:包装类转换为基础数据类型
1.自动拆箱:声明基础数据类型,将包装类变量赋值与其值;
2.手动拆箱:声明基础数据类型,通过包装类对象调用对应的value方法赋值给基础数据类型.

装箱:

拆箱:

例程:

		// 定义int类型变量,值为100
		int score = 100;
		// 创建Integer包装类对象,表示变量score1的值
		Integer score1 = new Integer(score);
		// 将Integer包装类转换为double类型
		double d = score1.doubleValue();
		// 将Integer包装类转换为long类型
		long l = score1.longValue();
		// 将Integer包装类转换为int类型
		int i = score1.intValue();
			//打印输出
			System.out.println(score);
			System.out.println(score1);
			System.out.println(d);
			System.out.println(l);
			System.out.println(i);

包装类的默认值

包装类也是一个类,所以包装类声明的对象默认值都为null

 

 

one == two 【false】 对象vs对象 判断【两个引用】(地址)是否一致 ,one和two都是100,但用了两个new就是申请了两个不同的地址。

three == 100;实际完成的是一个自动拆箱的操作,包装类对象three还原出来的100这个数值。

three == four;

valueof(()方法的[-128,127]缓存区:

Integer  four = 100;装箱操作实际执行的是 Integer four = Integer.valueof(100);

   1/valueof(),返回一个整数实例,该实例表示指定的整型值。如果不需要新的Integer实例,则通常应优先使用此方法,而不应使用构造函数Integer(int),使用构造方法回申请新的内存。

   2.java为了提高执行效率,在valuof()方法执行的过程中,提供了一个类似常量数组的缓存区(对象池),当Integer  four = 100,第二次使用valueof()执行的过程中,传入的参数在[-127,127]之间时,则直接使用缓存区中的值,不生成新的实例化对象,及three和four指向同一块内存,所以three == four;返回值为true,如果不在[-128,127]之间则会隐式的调用new来实例化一个Integer类型,所以five == six 返回值为false(开辟新的内存空间)

    3.因为通过缓存频繁请求的值,此方法可能会显著提高空间和时间性能。此方法将始终缓存-128到127(包括)范围内的值,并且可能缓存此范围之外的其他值。

   4. 简单总结就是[-128,127]之间的包装类对象使用 " =="比较返回值为true,范围外的一般都为false。

   5. 除了float和double之外都可以使用常量池的概念,double 和 float 没有对象常量池。

   

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值