Java常用类:8种包装类

关于8种包装类。(学习笔记)

在Java中有8种基本数据类型,分别是byte、short、int、long、float、double、boolean、char。相对应的,Java为这8种基本数据类型提供了8种包装类,分别是Byte、Short、Integer、Long、Float、Double、Boolean、Character。除了intchar的包装类写法稍有不同,其余均只需首字母大写即可。
为什么要提供这8种包装类呢?
因为有的时候我们会遇到如下这种情况:在这里插入图片描述
这个时候方法需要我们传入的是一个对象,而我们实际需求是要传入一个数字的话,就会无法实现需求,但是如果有包装类的话就可以实现需求了:
在这里插入图片描述
如此,我们的 123 就会被包装成一个对象了,这个过程称为装箱。

装箱与拆箱(以Integer为代表)
  1. 八种包装类型中有6种是数字对应的包装类,他们的父类都是Number,我们可以先研究一下Number中的公共方法:
    Number是一个抽象类,无法实例化对象。
    Number中如下的方法:
	byte byteValue() 
	abstract double doubleValue() 
	abstract float floatValue() 
	abstract int intValue() 
	abstract long longValue() 
	short shortValue()
	这些方法其实是所有的数学包装类的子类都有的,这些方法是负责拆箱的。

基本数据类型→引用数据类型(装箱)
在这里插入图片描述
引用数据类型→基本数据类型(拆箱)
在这里插入图片描述

构造方法

Integer的构造方法有两种:

Integer(int value) 
构造一个新分配的 Integer对象,该对象表示指定的 int值。  
Integer(String s) 
构造一个新分配 Integer对象,表示 int由指示值 String参数。  

分别可以传入int类型和String类型。其余的包装类也类似如此。具体可参考帮助文档。
在这里插入图片描述
如上,这两种方式都是可以创建对象的。但是如果传入的字符串参数不是数字的话就会引起数字格式化异常。在这里插入图片描述

自动装箱与自动拆箱

在JDK1.5之后,就已经支持自动装箱与自动拆箱了,再也不需要程序员手动装箱与拆箱了。如下:在这里插入图片描述
以上代码底层其实还是创建了对象的,内存图可参考如下我从视频中的截图:在这里插入图片描述
如上图内存图所示,所以如果我们执行a == b的代码的话,最终结果是false,这就说明了这两个对象的内存地址是不同的,所以是两个不同的对象。

但是如果我们执行如下代码的话,又会发现不一样的情况:在这里插入图片描述
最终结果是,128的两个变量结果是false,而127的两个变量的结果是true,这是为什么呢?
其实java中为了提高程序的执行效率,将[-128 ~ 127] 之间的多有的包装对象提前创建好了,放到了一个方法区的“整数型常量池”当中,目的是只要在这个区间的数据就不需要再new 对象了,直接冲整数型常量池当中取。
所以其实,变量x和变量y中保存的内存地址是一样的。具体可以参考如下视频中截图的内存地址:在这里插入图片描述

String、int、Integer之间的相互转换
  • int → Integer:在这里插入图片描述

  • Integer → int:在这里插入图片描述

  • int → String:在这里插入图片描述

  • String → int:在这里插入图片描述
    但是如果这个时候参数传入一个不是数字的字符串的话,同样会出现数字格式化异常:在这里插入图片描述

  • Integer → String:在这里插入图片描述

  • String → Integer:在这里插入图片描述
    当然如果传入的字符串不是数字的话,也会有数字格式化异常发生。

    总结:在这里插入图片描述

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值