常用API

Math类

工具类,提供数学计算的方法。
里面的方法都是静态的。

常用方法:

  • abs 获取绝对值
  • absExact 获取绝对值
  • ceil 向上取整
  • floor 向下取整
  • round 四舍五入
  • max 获取最大值
  • min 获取最小值
  • pow 获取a的b次幂
  • sqrt 开平方根
  • cbrt 开立方根
  • random 获取 [0.0, 1.0) 之间的随机数

System类

工具类,提供一些与系统相关的方法的。


时间原点:1970年1月1日,是C语言的生日
(中国在东八区,有8h时差,所以是1970年1月1日 08:00:00)


1s = 1000ms

常用方法:

  • exit 停止虚拟机
  • currentTimeMillis 获取当前时间的毫秒值
  • arraycopy 拷贝数组

Runtime类

表示当前虚拟机的运行环境。

常用方法:

  • getRuntime 当前系统的运行环境对象
  • exit 停止虚拟机
  • available 获得CPU的线程数
  • maxMemory JVM能从系统中获取总内存大小(单位byte)
  • totalMemory JVM已经从系统中获取总内存大小(单位byte)
  • freeMemory JVM剩余内存大小(单位byte)
  • exec 运行cmd命令

Object类

是Java中的顶级父类。所有的类都直接或间接地继承于Object类。

Object的构造方法:public Object() 无参构造
顶级父类中只有无参构造方法。

Object的3个成员方法(总共有11个):

  • toStrin 返回对象的字符串表示形式。一般重写。
  • equals 比较两个对象是否相等。比较对象时重写。
  • clone 对象克隆。默认浅克隆,如果需要深克隆要重写方法或使用第三方工具类。

对象克隆

  • 浅克隆 aka 浅拷贝
    不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝过来。

  • 深克隆 aka 深拷贝
    基本数据类型拷贝过来
    字符串复用
    引用数据类型重新创建新的

Objects类

工具类,提供一些操作对象的方法

常用方法:

  • equals(对象1, 对象2) 先做非空判断,比较两个对象
  • isNull(对象) 判断对象是否为空
  • nonNull(对象) 判断对象是否非空

BigInteger

BigInteger表示一个大整数。

获取BigInteger的对象:

1
BigInteger b1 = BigInteger.valueOf(0.1);
1
BigInteger b1 = new BigInteger("整数");

Java中有四种整数类型:byte, short, int, long

整数类型 byte short int long
在底层占用字节数 1 2 4 8

构造方法

  • BigInteger(int num, Random rnd) 获取随机大整数
  • BigInteger(String) 获取指定的大整数
  • BigInteger(String val, int radix) 获取指定进制的大整数
  • valueOf(long val) 静态方法获取BigInteger的对象,内部有优化
  1. 如果BigInteger表示的数字没有超出long的范围,可以用静态方法获取。
  2. 如果BigInteger表示的数字超出long,可以用构造方法获取。
  3. 对象一旦创建,BigInteger内部记录的值不能发生改变。
  4. 只要进行计算都会产生一个新的BigInteger对象。

常见方法

  • add
  • subtract 减
  • multiply 乘
  • divide 除,获取商
  • divideAndRemainder 除,获取商和余
  • equals 比较是否相同
  • pow 次幂
  • max / min 返回较大值 / 较小值
  • intValue 转为int类型整数(超出数据范围会报错)

底层存储方式

  1. 对于计算机而言,没有数据类型的概念,都是0101010101。
  2. 数据类型是编程语言自己规定的。

BigDecima


类型 占用字节数 总bit位数 小数部分bit位数
float 4个字节 32个bit位 23个bit位
double 8个字节 64个bit位 52个bit位

用于表示较大的小数和解决小数运算精度失真的问题。

获取BigDecimal的对象:

1
BigDecimal bd1 = new BigDecimal("较大的小数");
1
BigDecimal bd2 = BigDecimal.valueOf(0.1);

常见方法

  • add 加
  • subtract 减
  • multiply 乘
  • divide 除(四舍五入:RoundingMode.HALF_UP)
  • divide(BigDecimal val, 精确几位, 舍入模式) 除

正则表达式

可以校验字符串是否满足一定的规则,并用来校验数据格式的合法性。

找到Pattern类,查文档。

爬虫(略)

JDK7时间类

Date类

  • 创建日期对象:

    1
    Date date = new Date();
    1
    Date date = new Date(指定毫秒值);
  • 修改对象中的毫秒值:

    1
    setTime(毫秒值);
  • 获取时间对象中的毫秒值:

    1
    getTime();

SimpleDateFormat类

两个作用:

  1. 格式化:把时间变成我们喜欢的格式。
  2. 解析:把字符串表示的时间变成Date对象。

image-20230925114658961

如何指定格式:
yyyy年MM月dd日 HH:mm:ss

image-20230925121845584

常用方法:

image-20230925121930218

Calendar类

表示一个时间的日历对象

获取对象:
通过getInstance方法获取。

常见方法:
setXxx:修改
getXxx:获取
add:在原有的基础上进行增加或减少

细节点:
日历类中月份的范围:0~11
日历类中星期的特点:星期日是一周中的第一天

JDK8时间类

为什么要学JDK8新增的时间相关类?

image-20230925154920248

image-20230925155031978

ZoneId时区

image-20230925155241543

Instant时间戳

image-20230925160000440

ZoneDateTime带时区的时间

image-20230925160206056

Calendar日历类

image-20230925160528192

image-20230925160629331

工具类

image-20230925160708051

包装类

即基本数据类型对应的引用类型,即对象。

image-20230925161055811

byte Byte
short Short
cahr Charactor
int Integer
long Long
float Float
double Double
boolean Boolean

JDK5获取Integer对象的方式(了解):

image-20230925161504527

JDK5以后对包装类新增的特性:自动装箱、自动拆箱。

以后如何获取包装类对象:不需要new,不需要调用方法,直接赋值即可。

1
2
3
Integer i1 = 10;
Integer i2 = 10;
Integer i3 = i1 + i2;

Integer成员方法:image-20230925162941079

Arrays

操作数组的工具类

image-20230925163450349

Lambda(JDK8开始)

用来简化匿名内部类的书写。

函数式编程(Functional programming)

忽略面向对象的复杂语法,强调做什么,而不是谁去做。

Lambda表达式就是函数式思想的体现。

标准格式

1
2
3
() -> {

}

()对应着方法的形参;{}对应着方法的方法体。

注意:

  1. Lambda表达式只能简化函数式接口的匿名内部类的写法。
  2. 函数式接口:有且只有一个抽象方法的接口叫做函数式接口,接口上方可以加@FunctionalInterface注解。

表达式的省略写法

image-20230926155308334