包装类(Java)

本文介绍了Java中包装类的作用,解释了为何引入包装类以解决基本类型在面向对象场景下的不便。详细阐述了包装类与基本类型的对应关系,并展示了创建包装类实例的示例。同时,讨论了自动装箱和拆箱的概念,说明了它们在代码中的应用,以及-128到127范围内Integer对象的缓存特性。
摘要由CSDN通过智能技术生成

1.包装类

1.1为什么要引入包装类

  • 肯定有很多人有这样的疑问,我用这些基本类型挺好用的呀,也挺简单的,为什么要引入包装类呢,多麻烦呀。
  • Java是面向对象的语言,在很多的类和方法种的参数都需要使用对象(例如集合),但是基本类型又不是面向对象的,这就造成了很多的不方便。比如下列的语句就编译不通过。
Stack<char> stack = new Stack<>();
  • 为了解决该问题,我们就引入了包装类,顾名思义,就是将基本类型包装起来,使其具备对象的性质,包括可以添加属性和方法。

1.2包装类与基本类型

  • Java的基本类型(也就是内置类型)有8种,则它对应的包装类也有8种。
基本类型byteshortintlongcharbooleanfloatdouble
包装类ByteShortIntegerLongCharacterBooleanFloatDouble
  • 包装类创建实例的方式和普通的类创建实例是一样的。
Integer num = new Integer(1);

2.自动装箱和自动拆箱

  • 自动装箱是Java编译器在编译原生类型和对应的包装类型上做的自动转换。例如把int类型转换成Integer,把double类型转换成Double等等。

2.1基本类型与包装类的差别

  • 基本数据类型不是对象,也就是使用int double char boolean等定义的变量,常量,基本数据类型没有可调用的方法
int i = 1;//后面没有可以调用的方法了
Integer i= 1;//后边有很多方法可以调用

2.2自动拆箱

Integer i=100
  • 相当于编译器自动的做以下的语法编译
Integer i= Integer.valueOf(100);

在这里插入图片描述

  • 对于-128到127(默认是127)之间的值,Integer.valueOf(int i)返回的还是缓存的Integer对象。所以a和c指向的是同一个对象,所以为true.
    在这里插入图片描述
  • 超过-128~127的范围,就不存在上面的规律了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值