Java核心类库知识目录
-
一、常用类的概述和使用 -
- 1、常用的包(熟悉)
-
- 1.1?java.lang-核心包
- 1.2?java.util-工具包
- 1.3?java.io-输入输出包
- 1.4?java.net-网络包
- 1.5?java.sql-数据包
- 2、Object类
-
- 2.1?概念
- 2.2?equals()(重点)
- 2.3?hashCode()(重点)
- 2.4?toString()(重点)
- 3、包装类(熟悉)
-
- 3.1?概念
- 3.2?包装类的分类
- 3.3?Integer类
- 3.4?Double类
- 3.5?Boolean类
- 3.6?Character类
- 3.7?包装类的使用总结
- 4、常用的数学处理类(熟悉)
-
- 4.1?Math类
- 4.2?BigDecimal类
- 4.3?BigInteger类
-
二、String类的概述和使用 -
- 1、概念(重点)
- 2、常量池(重点)
- 3、常用的构造方法(重点)
- 4、常用的成员方法(重点)
- 6、相关的方法(熟悉)
-
三、可变字符串类和日期相关类(熟悉) -
- 1、可变字符串类(重点)
- 2、Java8之前的日期相关类(熟悉)
- 3、Java8增加的日期相关类(熟悉)
-
四、集合类库(上) -
- 1、集合的概述(重点)
- 2、Collection集合(重点)
- 3、Iterator接口(重点)
- 4、for each结构(重点)
- 5、List集合(重点)
- 6、Queue集合(重点)
-
五、集合类库下 -
- 1、泛型机制(熟悉)
- 2、泛型机制(熟悉)
- 3、Map集合(重点)
一、常用类的概述和使用
1、常用的包(熟悉)
1.1?java.lang-核心包
该包是Java语言的核心包,并且该包中的所有内容由Java虚拟机自动导入。
如:System类、String类
1.2?java.util-工具包
该包中里面提供了大量的工具类以及集合类。
如:Scanner类、Random类、List集合
1.3?java.io-输入输出包
该包中里面提供了大量的读写相关的类。
如:FileInputStream类、FileOutputStream类
1.4?java.net-网络包
该包中提供大量网络编程相关的类
如:ServerSocket类、Socket类
1.5?java.sql-数据包
该包中提供了大量操作数据库的类和接口
如:DriverManager类、Connection接口
2、Object类
2.1?概念
Object类是Java语言类层级的根类,即任何一个类都是该类的直接或间接子类;
如果定一个类时未使用extends关键字声明其父类,则其父类是java.lang.Object类;
Object类定义了“对象”的基本行为,被子类默认继承。
2.2?equals()(重点)
public boolean equals(Object obj)
用于判断调用对象是否与参数对象相等。
该方法默认比较俩个对象的地址是否相等,与==运算符结果一致。
若希望比较对象的内容,则需要重写该方法.
该方法被重写后,则也应该重写hasCode方法保证结果的一致性
2.3?hashCode()(重点)
public int hashCode()
用于获取调用对象的哈希码值(内存地址的编号)
若俩个对象调用equals()方法相等,则各自调用hashCode()方法的结果必须相同
若俩个对象调用equals()方法不相等,则各自调用hashCode()方法的结果应该不相同
为了使得hashCode()方法与equals()方法保持一致,equals()方法重写时,hashCode()方法也必须重写
//重写示例
//重写equals方法
@Overridepublic boolean equals(Object obj) {
//如果调用对象与参数对象指向同一个对象时,内容一定相同if(this == obj) return true;//当调用对象不为空,参数对象为空时,内容一定不相同if(obj == null)return false;//调用对象不为空,参数对象不为空,调用对象与参数对象不是指向一个地址时,此时判断姓名和学号属性是否都一致if(obj instanceof Student){
Student s = (Student) obj;return this.getId() == s.getId() && this.getName().equals(s.getName());}return false;
}
//重写hashCode方法,保证与equals结果一致
@Override
public int hashCode(){
final int type = 12;return type * 31 + getId() + getName().hashCode();
}
2.4?toString()(重点)
public String toString()
用于获取调用对象的字符串形式;
该方法默认返回的字符串为:包名.类名@哈希码值的十六进制;
为了返回更有意义的数据,需要重写该方法;
使用print/println打印引用/使用字符串拼接引用都会自动调用该方法.
3、包装类(熟悉)
3.1?概念
通常情况下,基本数据类型的变量不是对象,为了满足万物皆对象的理念,需要对基本数据类型的变量进行打包封装处理变成对象,而负责将这些变量声明为成员变量进行对象化处理的相关类,叫包装类
3.2?包装类的分类
包装类 | 对应的基本类型 |
---|---|
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.Boolean | boolean |
java.lang.Character | char |
3.3?Integer类
- 基本概念
java.lang.Integer类内部包装了一个int类型的变量作为成员变量,主要用于实现对int类型的包装,并提供int类型到String类型之间的转换等方法 - 常用的常量
常量类型和名称 | 功能介绍 |
---|---|
public static final int MIN_VALUE | 表示int类型可以描述的最小值,-2^31 |
public static final int MAX_VALUE | 表示int类型可以描述的最大值,2^31-1 |
public static final int SIZE | 表示int类型采用二进制补码形式的位数 |
public static final int BYTES | 表示int类型所占的字节个数 |
public static final Class TYPE | 表示int类型的Class实例(反射用到) |
- 常用的方法
方法声明 | 功能介绍 |
---|---|
@Deprecated(since=“9”) public Integer?(int value) |
根据参数指定的整数来构造对象(已过时) |
@Deprecated(since=“9”) public Integer?(String s) throws NumberFormatException |
根据参数指定的字符串构造对象(已过时) |
int intValue() | 获取调用对象的整数值并返回(拆箱) |
static Integer valueOf?(int i) | 根据参数指定整数值得到Integer对象(装箱) |
boolean equals?(Object obj) | 比较调用对象与参数指定的对象是否相等 |
String toString() | 返回调用对象数值的字符串形式 |
static int parseInt?(String s) throws NumberFormatException | 字符串转换为int类型并返回。 传入的字符串不是整数时,运行时会报java.lang.NumberFormatException |
static String toString?(int i) | 返回参数指定整数的十进制字符串形式 |
static String toBinaryString?(int i) | 返回参数指定整数的二进制字符串形式 |
static String toHexString?(int i) | 返回参数指定整数的十六进制字符串形式 |
static String toOctalString?(int i) | 返回参数指定整数的八进制字符串形式 |
-
装箱和拆箱概念
Java5发布之前,用包装类对象进行运算时,需要“装箱”和“拆箱”操作:运算前先将包装类拆分为基本数据类型,运算后再将结果封装成包装类对象。从Java5开始增加了自动装箱和拆箱的功能。
-
自动装箱池
在Integer内部提供了自动装箱池技术,将-128到127之间的整数已经装箱完毕,当程序中使用该范围之间的整数时,无需装箱直接取用自动装箱池中的对象即可,从而提高效率。
public class IntegerTest2 {
public static void main(String[] args) {
//装箱拆箱笔试考点(自动装箱池)Integer a = 128;Integer b = 128;Integer c = new Integer(128);Integer d = new Integer(128);System.out.println("a == b " + (a == b));System.out.println("a.equals(b) " + a.equals(b));System.out.println("c == d " + (c == d));System.out.println("c.equals(d)" + c.equals(d));System.out.println("-----------------------------");Integer a2 = 127;Integer b2 = 127;Integer c2 = new Integer(127);Integer d2 = new Integer(127);//-128-127的int整数,不会再新建Integer对象,而是直接去自动装箱池中获取即可,所以此时a2与b2获取的是同一个对象,内存地址是一样的System.out.println("a2 == b2 " + (a2 == b2));System.out.println("a2.equals(b2) " + a2.equals(b2));System.out.println("c2 == d2 " + (c2 == d2));System.out.println("c2.equals(d2)" + c2.equals(d2));}
}
运行结果:
3.4?Double类
- 基本概念
java.lang.Double类内部包装了一个double类型的变量作为成员变量,主要用于实现对double类型的包装,并提供double类型到String类型之间的转换等方法 - 常用的常量
常量类型和名称 | 功能介绍 |
---|---|
public static final int BYTES | 表示double类型的字节个数 |
public static final int SIZE | 表示double类型的二进制位数 |
public static final Class TYPE | 表示double类型的Class实例(反射用到) |
- 常用的方法
方法声明 | 功能介绍 |
---|---|
Double?(double value) | 根据参数指定的浮点数来构造对象(已过时) |
Double?(String s) | 根据参数指定的字符串构造对象(已过时) |
double doubleValue() | 获取调用对象的浮点数据并返回(拆箱) |
static Double valueOf?(double d) | 将浮点数据转换为Double对象(装箱) |
boolean equals?(Object obj) | 比较调用对象与参数对象是否相等 |
String toString() | 返回调用对象的字符串形式 |
static double parseDouble?(String s) | 将字符串转换为double类型并返回 |
boolean isNaN() | 判断调用对象的数值是否为非数字 |
- 扩展
java.lang.Number是个抽象类,是Byte、Short、Integer、Long、Float、Double等类型的父类,描述所有类共有的成员
3.5?Boolean类
- 基本概念
java.lang.Boolean类内部包装了一个boolean类型的变量作为成员变量,主要用于实现对boolean类型的包装,并提供boolean类型到String类型之间的转换等方法 - 常用的常量
常量类型和名称 | 功能介绍 |
---|---|
static Boolean FALSE | 对应基值为false的对象 |
static Boolean TRUE | 对应基值为true的对象 |
static Class TYPE | 表示boolean类型的Class实例 |
- 常用方法
方法声明 | 功能介绍 |
---|---|
Boolean?(boolean value) | 根据参数指定的boolean类型构造对象(已过时) |
Boolean?(String s) | 根据参数指定的字符串构造对象(已过时) |
boolean booleanValue() | 获取调用对象的boolean值并返回(拆箱) |
valueOf?(boolean b) | 将boolean类型转换为Boolean类型对象(装箱) |
boolean equals?(Object obj) | 比较调用对象与参数对象是否相等 |
String toString() | 返回调用对象的字符串形式 |
static boolean parseBoolean?(String s) | 将字符串转换为boolean类型并返回 |
3.6?Character类
- 基本概念
java.lang.Character类内部包装了一个char类型的变量作为成员变量,主要用于实现对char类型的包装,并提供char类型到String类型之间的转换等方法 - 常用的常量
常量类型和名称 | 功能介绍 |
---|---|
static int BYTES | 表示char类型的字节数 |
static int SIZE | 表示char类型的二进制位数 |
static Class TYPE | 表示char类型的Class实例 |
- 常用方法
方法声明 | 功能介绍 |
---|---|
Character?(char value) | 根据参数指定的字符串构造对象(已过时) |
char charValue() | 获取调用对象的字符数据并返回(拆箱) |
static Character valueOf?(char c) | 将char类型转换为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.7?包装类的使用总结
-
基本数据类型转换为包装类的方式
(1) 包装类的构造方法
(2) 包装类的静态的valueOf()方法 -
获取包装类的基本数据类型的方式
(1)包装类对象的xxxValue()方法 -
字符串转换为基本数据类型的方式
(1)包装类的静态parseXxx()方法
4、常用的数学处理类(熟悉)
4.1?Math类
- 基本概念
主要用于提供执行数学运算的方法,如对数,平方根; - 常用方法
方法声明 | 功能介绍 |
---|---|
static int max?(int a, int b) | 返回俩个参数中最大值 |
static int min?(int a, int b) | 返回俩个参数中最小值 |
static double pow?(double a, double b) | 返回第一个参数的幂 |
static int abs?(int a) | 返回参数数值的绝对值 |
static long round?(double a) | 返回参数四舍五入的结果 |
static double sqrt?(double a) | 返回参数的平方根 |
static double random() | 返回0.0 - 1.0 的随机数 |
4.2?BigDecimal类
- 基本概念
由于float和double类型运算是可能会有误差,希望精准运算,则借助java.math.BigDecimal类 - 常用方法
方法声明 | 功能介绍 |
---|---|
BigDecimal?(String val) | 根据参数指定字符串构造对象 |
BigDecimal add?(BigDecimal augend) | 调用对象数值 + 参数对象数值 |
BigDecimal subtract?(BigDecimal subtrahend) | 调用对象数值 - 参数对象数值 |
BigDecimal multiply?(BigDecimal multiplicand) | 调用对象数值 * 参数对象数值 |
BigDecimal divide?(BigDecimal divisor) | 调用对象数值 / 参数对象数值 结果除不尽时,会报java.lang.ArithmeticException异常,需要传入舍入模式RoundingMode |
4.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) | 取模和余数 |
二、String类的概述和使用
1、概念(重点)
- java.lang.String 用于描述字符串,Java程序中所有的字符串字面值都可以使用该类的对象描述
- 该类由final修饰,不能被继承
- 从jdk1.9开始,该类的底层不再使用char[]存储数据,而是改成byte[] 加上编码标记,从而节约了一些空间。
- 该类描述的字符串内容是个常量,不可更改,因此可被共享使用
String s = "abc"; //"abc"是个字符串常量,不可更改
s = "123"; //重新赋值,只是将"123"字符串常量的地址指向变量s,并没有修改s原指向的对象"abc"的内容
//字符串内容不存在修改一说,因为俩个不相等的字符串是属于俩个字符串对象,表面看似修改了字符串内容,实际是指向了一个新的字符串对象地址
2、常量池(重点)
由于String类型描述的字符串内容是常量不可改变,因此Java虚拟机将首次出现的字符串放入常量池中(方法区),若后续代码中出现了相同的字符串内容,则直接使用池中已有的字符串对象,而无需申请内存及创建对象,从而提高了性能。
String常量池解释
3、常用的构造方法(重点)
方法声明 | 功能介绍 |
---|---|
String() | |
4、常用的成员方法(重点)
## 5、正则表达式的概念和使用(熟悉)
6、相关的方法(熟悉)
三、可变字符串类和日期相关类(熟悉)
1、可变字符串类(重点)
2、Java8之前的日期相关类(熟悉)
3、Java8增加的日期相关类(熟悉)
四、集合类库(上)
1、集合的概述(重点)
2、Collection集合(重点)
3、Iterator接口(重点)
4、for each结构(重点)
5、List集合(重点)
6、Queue集合(重点)
五、集合类库下
1、泛型机制(熟悉)
2、泛型机制(熟悉)
3、Map集合(重点)
文章内容输出来源:拉勾教育_大数据开发高新训练营第3期