如果想观看更多Java内容 可上我的个人主页关注我,地址子逸爱编程-CSDN博客https://blog.csdn.net/a15766649633?spm=1000.2115.3001.5343
使用工具 IntelliJ IDEA Community Edition 2023.1.4
使用语言 Java8
代码能力快速提升小方法,看完代码自己敲一遍,十分有用
目录
1.包装类
一般使用的的话就只用Integer,如果int值存在null值就使用Integer,不存在使用int就可以了,其他的包装类了解即可;
Java包含八种基本数据类型,同时包含与其对应的包装类,下面将详细介绍包装类的由来和用法;
1.1 包装类概述
Java是面向对象的编程语言,但它的基本数据类型是不支持面向对象机制的,不具备对象的特征,它们为程序开发带来了一定的方便性,如可以进行有效、常规的数据处理,但有些时候也会受到一些制约,例如,所有的引用类型的变量都继承了Object类,可以当做Object类型变量使用,但基本数据类型不可以(基本数据类型并没有继承Object),如果方法的参数是Object类型,但实际上需要的数据是类似2、3这样的数值,就比较难处理。
问题:
在以上定义的ArrayList集合中,集合元素为Object类型,但向其中添加基本类型数据时,程序为什么不报错呢?
答案:是代码中使用了包装类。包装类是指将基本数据类型封装到一个类中,也就是将基本类型包装成一个类类型。Java程序设计语言为每一种基本类型都提供了一个包装类,而这些包装类存在于java.lang包中,共有八个包装类,如下所示:
1.2 包装类类型
object(以下都是包装类)
Boolean
Number Byte Short Integer Long Float Double
Character
其中,所有的数字类型包装类都继承了Number类,Number是一个抽象类。Number类包装了Byte、Short、Interger、Long、Float、Double等数字类型,并且实现其所定义的方法,这些方法以不同的数字格式返回对象的值。
1.3 包装类和基本数据类型的对应关系
byte
java.lang.Byte
boolean
java.lang.Boolean
short
java.lang.Short
char
java.lang.Character
int
java.lang.Integer
long
java.lang.Long
float
java.lang.Float
double
java.lang.Double
包装类的用途主要由以下两个。
- 包装类作为和基本数据类型对应的类型存在,方便对象的操作。
- 包装类包含每种基本数据类型的相关属性,如最大值、最小值等,以及相关的操作方法。
1.4 包装类和基本数据类型的转换
在不同应用场景中,基本数据类型和包装类间要进行相互转换以完成特定操作,下面详细介绍它们之间相互转换的方法。
1.4.1 基本数据类型转换为包装类
在Java中,基于基本数据类型数据创建包装类对象通常可以采用如下两种方式:
public Type(type value)
publiv Type(String value)
这是构造方法;
其中,Type表示包装类,参数type为基本数据类型;
针对每一个包装类,都可以使用关键字new将一个基本数据类型值包装为一个对象。例如,要创建一个Integer类型的包装类对象,可以这样写:
Integer intValue=new Integer(21);
Integer intValue=new Integer("21");
1.4.2 基本数据类型转换为包装类贯穿示例
运行代码
运行结果
true+35+男
true+true+false
从以上代码的运行结果可以看出,当试图使用一个字符串来创建Boolean对象时,如果传入的字符串是"true"或不同字母大小写形式(如:"TRue"),则都将创建与true对应的Boolean对象;如果传入其他字符串,则会创建与false对应的Boolean对象。
注意
当试图使用一个字符串来创建Byte、Short、Integer、Double等包装类对象时,如果传入的字符串不能成功转换为对应的基本类型变量,则会引发NumberFormatException异常。
char型数据不能使用第二种形式的构造方法创建Character类型的包装类对象:
除此之外,也可通过调用包装类的valueOf()方法实现从基本数据类型到包装类的转换,可自行查阅API帮助文档学习。
1.4.3 包装类转换为基本数据类型
包装类转换为基本数据类型通常采用如下方法:
public type typeValue()//这是一个方法
其中,type指的是基本数据类型,如IntValue()、charValue()等,相应的返回值为int、char。将包装类对象转换为基本类型数据,代码如下。
1.4.4 包装类转换为基本数据类型贯穿示例
运行类代码
运行结果
true+35+男
1.5 装箱拆箱
Java基本数据类型变量和包装类对象之间的转换烦琐,从JDK1.5之后提供了自动装箱(Autoboxing)和自动拆箱(AutoUnboxint)功能
自动装箱
把基本数据类型变量直接转换为对应的包装类对象,或者转换为Object对象;
自动拆箱
与装箱相反,将包装类对象转换为对应的基本数据类型变量;
1.5.1 装箱拆箱贯穿示例
运行类代码
运行结果
true
35+男
从以上代码可以看出,当JDK提供了自动装箱/拆箱功能后,大大简化了基本数据类型和包装类相互转换的过程。但是进行自动装箱/拆箱时必须注意类型匹配。例如,Integer对象只能自动拆箱成int变量,不能试图自动拆箱成boolean类型变量;而int变量也只能自动装箱成Integer对象,不能自动装箱成Boolean对象。即使可以赋值给Object对象,也只是利用了java中向上自动转型的特性。
1.6 包装类的作用
包装类对象只有在基本数据类型需要用对象表示时才使用,包装类并不是用来取代基本数据类型的。
2.日期类
下篇预告:日期类 Random(随机数)类 ,敬请期待吧!!!