一 包装类(熟悉)
1 包装类的概念
通常情况下基本数据类型的变量不是对象,为了满足万物皆对象的理念就需要对基本数据类型的变量进行打包封装处理变成对象,而负责将这些变量声明为成员变量进行对象化处理的相关类,叫做包装类。
如:
Person p = new Person();这段代码的意思是Person类型的对象指向Person类型的引用
int num = 10;
这一行代码是表示声明,一个int类型的变量叫num,然后初始值为10。对吧,那问大家从语法角度来讲,那么这个变量是对象吗?不是对不对,而我们变量p实际上是不是它可以代表person的这个对象,所以说它可以看作是对象,
但是那么从语法层面来说并不是对象吧。但是我们在前面讲面向对象的概念的时候,我们又提到我们说java语言,它实际上是一个什么来着?叫纯粹的面向对象的编程语言,而且我们提到一个理念,万物皆对象。对不对?那就意味着像那么这样的变量,我们实际上也应该从面向对象的理念上来说,是不是也应该看作是对象?但从语法层面来说,是不是它不是啊?对不对?那这样的话,实际上是不是就违背了我们万物皆对象的理念呀?
那怎么办呢?我们是不是就得想办法把这个num变量变成对象?对不对?而在java中要变成对象,那实际上是不是意味着我们要把这个num呢?哎,首先是不是得要哎,就是要想变成对象是不是?首先得要有个类才能创建对象。那我们是不是就得想办法让这个num变量跟一个类?是不是关联起来?对不对?那怎么关联呢?我是不是可以这样写?
Public class MyInt(){
private int num=10;
}
我是不是相当于是我自个儿定义了一个类?我定义一个类之后,然后在我自个儿定义的这个类的里面。大家注意,我是不可以这样去做,看着啊,叫把这个int num=10这一行代码,然后拷贝过来,放到这个位置。我在前面再加一个private。你是不是就看懂了?
啥意思啊?也就是拿着我们声明的这个变量,是不是让它作为我们这个类的什么来着?成员变量。对不对?然后我再拿着这个类去new一个对象之后,那这个对象里面是不是肯定会包含着这个int num=10啊?对不对?那此时我是不是就相当于无形中把这个num是不是打包到了这个类中?然后通过new的方式变成了对象。对吗?
所以像这种我们把基本数据类型的变量通过打包分装。然后能够处理成,或者说能够new出来对象的这样的类。大家注意进行对象化处理的这些类,我们就把它叫做包装类。(包装类通俗的解释)
但在我们实际开发中不需要去写
Public class MyInt(){
private int num=10;
}
因为我们java会提供相应的包装类。
包装类的主要价值:实际上是不是就是为了把我们java中的八种基本数据类型的对象可以怎么办?打包成哎,就是八种基本数据类型的这个变量。然后通过包装类,实际上是不是就可以打包成对象?对不对?好,那打包成对象之后,有什么好处啊?是不是我们就满足了?万物皆对性的理念。那么,在以后的开发中,只要涉及到对象,那么在很多的场合里面,可能要求必须是对象的时候,我们实际上。是不是就可以把这些变量打包成对象之后,是不是就可以间接的或者变相的实现这些变量的应用啊?这就是包装类的一个概念。
2 包装类的分类
下面这张图是8种基本数据类型的包装类:

2.1 Integer类的概述
2.1.1 基本概念
java.lang.Integer类内部包装了一个int类型的变量作为成员变量,主要用于实现对int类型的包装并
提供
int
类型到
String
类之间的转换等方法。
2.1.2 常用的常量

在代码中将上面描述的常量打印出来,如下图所示:
2.1.3 常用的方法
下面这张图描述的是两个过时的方法Integer(int value)和Integer(String s)以及能替代这两个方法的valueOf()
下面的图片介绍了方法intValue()
下面这张图是对上面常用的方法表格中上文没提到的方法在代码中的使用
2.1.4 装箱和拆箱的概念
在Java5
发布之前使用包装类对象进行运算时,需要较为繁琐的
“
拆箱
”
和
“
装箱
”
操作;即运算前先将
包装类对象拆分为基本类型数据,运算后再将结果封装成包装类对象。 从Java5
开始增加了自动拆箱和自动装箱的功能。
下面这张图介绍了什么是装箱和拆箱

下面这张图介绍了什么是自动装箱和自动拆箱
自动装箱池
在
Integer
类的内部提供了自动装箱池技术,将
-128
到
127
之间的整数已经装箱完毕,当程序中使用
该范围之间的整数时,无需装箱直接取用自动装箱池中的对象即可,从而提高效率。
分析:我们去餐厅吃饭,吃完饭我们是不是要去找纸擦嘴巴。自动装箱池好比什么意思就好比。我呢,比较懂大家吃完饭都是要擦嘴巴的,所以我就呢准备好了一包纸放到了我们这个餐桌上。提前拿出来,放到这个餐桌上,对不对?好,我说接下来大家的话呢?哎,如果再需要吃完饭,需要擦嘴的时候,不需要再去找纸了,纸我已经给你准备好了,直接拿着用就行。懂这意思吧,是不是就省心了,不用去别的餐桌上再去找了?对不对?或者你翻包了。
下面这张图展示了什么是自动装箱池

为什么自动装箱有范围限制(-128到127)?
我们不需要把全世界的纸都拿过来用,只需要拿一部分就行了。我们装箱不需要把全部的数字都装进去,只需要装一部分的就可以了。装好太多的对象,不也是得消耗。内存空间的嘛。
2.2 Double类的概述
2.2.1基本概念
java.lang.Double
类型内部包装了一个
double
类型的变量作为成员变量,主要用于实现对
double
类型的包装并提供
double
类型到
String
类之间的转换等方法。
2.2.2 常用的常量

2.2.3 常用的方法

下面这个图是描述在Double类中如何通过调用valueOf()和doubleValue()来实现装箱和拆箱的

Double类中的其他的常用方法以及什么是自动装箱和自动拆箱

扩展:
java.lang.Number
类是个抽象类,是上述类的父类来描述所有类共有的成员
如下图所示:

2.3 Boolean类的概述
2.3.1 基本概念
java.lang.Boolean
类型内部包装了一个
boolean
类型的变量作为成员变量,主要用于实现对
boolean
类型的包装并提供
boolean
类型到
String
类之间的转换等方法。
2.3.2 常用的常量

2.2.3 常用的方法

方法在代码中的使用,如下图所示:

2.4 Character类的概述
2.4.1 基本概念
java.lang.Character
类型内部包装了一个
char
类型的变量作为成员变量,主要用于实现对
char
类型
的包装并提供字符类别的判断和转换等方法。
2.4.2 常用的常量

2.4.3 常用的方法
下面这张图就主要说了什么是装箱拆箱?什么是自动装箱?以及Character类中方法的使用
2.5 包装类(Wrapper)的共性总结
(1)基本数据类型转换为对应包装类的方式
调用包装类的构造方法或静态方法即可(也就是装箱用的方法)
(2)获取包装类对象中基本数据类型变量数值的方式
调用包装类中的
xxxValue
方法即可(也就是拆箱用的方法)
(3)字符串转换为基本数据类型的方式
调用包装类中的
parseXxx
方法即可
二 常用的数学处理类
1 Math类的概述
1.1基本概念
java.lang.Math
类主要用于提供执行数学运算的方法,如:对数,平方根
1.2常用的方法

下面这张图片是对Math类中常用方法的一些使用

2 BigDecimal类的概述
2.1 基本概念
由于
float
类型和
double
类型在运算时可能会有误差,若希望实现精确运算则借助
java.math.BigDecimal
类型加以描述
2.2 常用的方法

下面这张图是BigDecimal类中常用方法在代码中是如何调用的?当前正在调用的对象和参数对象进行相加(这句话挺重要的)
运行结果:
3 BigInteger类的概念
3.1 基本概念
若希望表示比
long
类型范围还大的整数数据,则需要借助
java.math.BigInteger
类型描述。
3.2 常用的方法

总结: