如果想观看更多Java内容 可上我的个人主页关注我,地址子逸爱编程-CSDN博客https://blog.csdn.net/a15766649633?spm=1000.2115.3001.5343
使用工具 IntelliJ IDEA Community Edition 2023.1.4
使用语言 Java8
代码能力快速提升小方法,看完代码自己敲一遍,十分有用
目录
1.包装类
1.1 包装类概述
1.2 包装类类型
1.3 包装类和基本数据类型的对应关系
1.4 包装类和基本数据类型的转换
1.4.1 基本数据类型转换为包装类
1.4.2 基本数据类型转换为包装类贯穿示例
1.4.3 包装类转换为基本数据类型
1.4.4 包装类转换为基本数据类型贯穿示例
1.5 装箱拆箱
1.5.1 装箱拆箱贯穿示例
1.6 包装类的作用
2.日期类
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(随机数)类 ,敬请期待吧!!!