Java 基础 - Java核心类库 - 包装类与数值相关类
Java 基础 - Java核心类库 - 包装类与数值相关类
1 Java常用包
Java.lang 包
- 是Java语言的核心包,并且该包中的所有内容由Java虚拟机自动导入。 如:System类、String类、...
Java.util 包
- 是Java语言的工具包,里面提供了大量工具类以及集合类等。 如:Scanner类、Random类、List集合、...
Java.io 包
- Java语言中的输入输出包,里面提供了大量读写文件相关的类等。 如:FileInputStream类、FileOutputStream类、...
Java.net 包
- Java语言中的网络包,里面提供了大量网络编程相关的类等。 如:ServerSocket类、Socket类、...
Java.sql 包
- Java语言中的数据包,里面提供了大量操作数据库的类和接口等。 如:DriverManager类、Connection接口、…
2 Object 类
2.1 基本概念
- Java.lang.Object 类为根类,所有类都是该类直接或间接的子类(有父类的类为间接继承)
- 自定义类时没有extends声明父类,其父类为Java.lang.Object
- Object类的方法被子类默认继承
2.2 常用方法
Object()
- 无参构造方法
boolean equals(Object obj)
- 判断调用对象和参数对象是否相等
- 默认比较两个对象的地址是否相等,与 == 结果一直
- 若要比较对象的内容需要重写该方法
- 如果再重写方法中进行内容的计较,参数obj需要先进行强制类型转换再调用方法比较具体的值
- 处理传入参数为null的特殊情况,参数为null直接返回false 或两个参数getClass方法的值 != 直接返回false
- 处理传入参数与调用对象 == 即地址相同的情况,直接返回true
- 该方法重写后需要重写hashCode方法来保证结果的一致性
- 重写hashCode方法时也是调用引用数据类型的hashCode方法来进一步重写
- 若重写该方法来比较内容且内容不是基本数据类型而是引用数据类型(如String),在自定义equals方法中调用引用数据类型重写后的equals方法
int hashCode()
- 获取调用对象的哈希码值(内存地址编号)
- 若两对象equals方法相等,各自调用hashCode方法的结果必须相等
- 如两对象equals方法不相等,各自调用hasCode方法的结果不相等
String toString()
- 获取调用对象的字符串形式
- 默认返回值为:包名.类名@哈希码值的十六进制
- 当print和println打印引用或字符串拼接引用时都会自动调用该方法
Class<?> getClass()
- 返回调用对象执行时的Class实例,反射机制使用
3 包装类
3.1 概念和常见包装类
需求需要将基本数据类型变量打包处理成对象
常见包装类
-
java.lang.Byte byte
-
java.lang.Short short
-
java.lang.Integer int
-
java.lang.Long long
-
java.lang.Float float
-
java.lang.Double double
以上类都继承 java.lang.Number 类 (抽象类)
-
java.lang.Boolean boolean
-
java.lang.Character char
3.1.1 Integer 类
概念:
- java.lang.Integer类内部包装了一个int类型的变量作为成员变量
- 主要用于实现对int类型的包装并 提供int类型到String类之间的转换等方法
常用常量:
public static final int MAX_VALUE
- 表示int类型可以描述的最大值,即2^31-1
public static final int MIN_VALUE
- 表示int类型可以描述的最小值,即-2^31
public static final int SIZE
- 表示int类型采用二进制补码形式的位数
public static final int BYTES
- 表示int类型所占的字节个数
public static final Class TYPE
- 表示int类型的Class实例
构造方式:
Java 9 之前
// 2种构造方式
Integer i = new Integer(123); //参数类型为int
Integer i = new Integer("345"); //参数类型为String
或 valueOf()
Java9之后 new Integer() 的方式过时
Integer i = Integer.valueOf(123); //参数类型为int
Integer i = Integer.valueOf("345"); //参数类型为String
3.1.1.1 Integer 类常用方法
| 方法 | 功能 |
|---|---|
| int intValue() | 获取调用对象中的整数值并返回 |
| static Integer valueOf(int/String) | 根据指定参数得到Integer类型对象 |
| boolean equals(Object obj) | 比较调用对象与参数指定的对象是否相等 |
| String toString() | 返回描述调用对象数值的字符串形式 |
| static int parseInt(String s) | 将字符串类型转换为int类型并返回 |
| static String toString(int i) | 获取参数指定整数的十进制字符串形式 |
| static String toBinaryString(int i) | 获取参数指定整数的二进制字符串形式 |
| static String toHexString(int i) | 获取参数指定整数的十六进制字符串形式 |
| static String toOctalString(int i) | 获取参数指定整数的八进制字符串形式 |
3.1.1.2 装箱和拆箱
装箱:通过valueOf()从int类型到Integer类型的转换,将int类型的变量作为Integer类的成员变量,该打包过程叫做装箱
拆箱:通过intValue()从Integer类型到int类型的转换叫做拆箱
从Java 5 开始增加了自动装箱和自动拆箱机制
- 直接通过赋值运算符实现自动装箱和拆箱
Integer i = 500; //自动装箱
int num = i; //自动拆箱
自动装箱池
Integer 类内部提供了自动装箱池技术,将 -128 到 127 之间的整数装箱, 使用时直接取用自动装箱池中的对象
Integer i1 = 127;
Integer i2 = 127;
i1 == i2 // true 装箱池中的获取的对象地址相同
Integer i3 = new Integer(128);
Integer i4 = new Integer(128);
i3 == i4 // false
3.1.2 Double 类
概念:
- java.lang.Double类型内部包装了一个double类型的变量作为成员变量
- 主要用于实现对double 类型的包装并提供double类型到String类之间的转换等方法
常用常量:
- public static final int SIZE
- 表示double类型的二进制位数
- public static final int BYTES
- 表示double类型的字节个数
- public static final Class TYPE
- 表示double类型的Class实例
常用方法:
| 方法 | 说明 |
|---|---|
| double doubleValue() | 获取调用对象中的浮点数据并返回 |
| static Double valueOf(double/String) | 根据指定参数得到Double类型对象 |
| boolean equals(Object obj) | 比较调用对象与参数指定的对象是否相等 |
| String toString() | 返回描述调用对象数值的字符串形式 |
| static double parseDouble(String s) | 将字符串类型转换为double类型并返回 |
| boolean isNaN() | 判断调用对象的数值是否为非数字 |
3.1.3 Boolean 类
基本概念:
- java.lang.Boolean类型内部包装了一个boolean类型的变量作为成员变量
- 主要用于实现对 boolean类型的包装并提供boolean类型到String类之间的转换等方法
常用常量:
- public static final Boolean FALSE
- 对应基值为false的对象
- public static final Boolean TRUE
- 对应基值为true的对象
- public static final Class TYPE
- 表示boolean类型的Class实例
常用方法:
| 方法 | 说明 |
|---|---|
| boolean booleanValue() | 获取调用对象中的布尔数值并返回 |
| static Boolean valueOf(boolean/String) | 根据指定参数得到Boolean类型对象 |
| boolean equals(Object obj) | 比较调用对象与参数指定的对象是否相等 |
| String toString() | 返回描述调用对象数值的字符串形式 |
| static boolean parseBoolean(String s) | 将字符串类型转换为boolean类型并返回 |
3.1.4 Character 类
基本概念:
- java.lang.Character类型内部包装了一个char类型的变量作为成员变量
- 主要用于实现对char类型 的包装并提供字符类别的判断和转换等方法
常用的常量:
- public static final int SIZE
- 表示char类型的二进制位数
- public static final int BYTES
- 表示char类型的字节个数
- public static final Class TYPE
- 表示char类型的Class实例
常用的方法:
| 方法 | 说明 |
|---|---|
| char charValue() | 获取调用对象中的字符数据并返回 |
| static Character valueOf(char c) | 根据参数指定字符数据得到Character类型对象 |
| boolean equals(Object obj) | 比较调用对象与参数指定的对象是否相等 |
| String toString() | 返回描述调用对象数值的字符串形式 |
| static boolean isUpperCase(char ch) | 判断参数指定字符是否为大写字符 |
| static boolean isLowerCase(char ch) | 判断参数指定字符是否为小写字符 |
| static boolean isDigit(char ch) | 判断参数指定字符是否为数字字符 |
| static char toUpperCase(char ch) | 将参数指定的字符转换为大写字符 |
| static char toLowerCase(char ch) | 将参数指定的字符转换为小写字符 |
3.1.5 包装类小结
基本数据类型转换为对应包装类的方式
- 调用包装类的构造方法或静态方法即可
获取包装类对象中基本数据类型变量数值的方式
- 调用包装类中的xxxValue方法即可
字符串转换为基本数据类型的方式 (Character 类除外)
- 调用包装类中的parseXxx方法即可
3.2 数学处理类
3.2.1 Math 类
概念:
- java.lang.Math类主要用于提供执行数学运算的方法,如:对数,平方根
常用方法:
| 方法 | 说明 |
|---|---|
| static int max(int a, int b) | 返回两个参数中的最大值 |
| static int min(int a, int b) | 返回两个参数中的最小值 |
| static double pow(double a, double b) | 返回a的b次方 |
| static int abs(int a) | 返回参数指定数值的绝对值 |
| static long round(double a) | 返回参数四舍五入的结果 |
| static double sqrt(double a) | 返回参数的平方根 |
| static double random() | 返回0.0到1.0的随机数 |
3.2.2 BigDecimal 类
概念:
- 由于float类型和double类型在运算时可能会有误差,若希望实现精确运算则借助 java.math.BigDecimal类型加以描述
- 该类遇到无线小数会报错,需要指定摄入方式
- HALF_UP 学校常用,向最近的舍入,如果相等则向上舍入
- HALF_DOWN 向最近的舍入,如果相等则向下舍入
- HALF_EVEN 像最近舍入,如果相等向偶数舍入
RoundingMode.HALF_UP
常用方法:
| 方法 | 说明 |
|---|---|
| BigDecimal(String val) | 根据参数指定的字符串来构造对象 |
| BigDecimal add(BigDecimal augend) | 用于实现加法运算 |
| BigDecimal subtract(BigDecimal subtrahend) | 用于实现减法运算 |
| BigDecimal multiply(BigDecimal multiplicand) | 用于实现乘法运算 |
| BigDecimal divide(BigDecimal divisor) | 用于实现除法运算 |
3.2.3 BigInteger 类
基本概念:
- 若希望表示比long类型范围还大的整数数据,则需要借助java.math.BigInteger类型描述
常用方法
| 方法 | 说明 |
|---|---|
| BigInteger(String val) | 根据参数指定的字符串来构造对象 |
| BigInteger add(BigInteger val) | 用于实现加法运算 |
| BigInteger subtract(BigInteger val) | 用于实现减法运算 |
| BigInteger multiply(BigInteger val) | 用于实现乘法运算 |
| BigInteger divide(BigInteger val) | 用于实现除法运算 |
| BigInteger remainder(BigInteger val) | 用于实现取余运算 |
| BigInteger[] divideAndRemainder(BigInteger val) | 用于实现取商和余数的运算 |

浙公网安备 33010602011771号