当前位置: 代码迷 >> 综合 >> Level1-Module3—Java核心类库(上)
  详细解决方案

Level1-Module3—Java核心类库(上)

热度:72   发布时间:2024-03-08 22:55:55.0

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期

  相关解决方案