常用API
Java已经写好的各种功能的java类
Math
Final修饰,不能被继承

因为是静态static的,所以使用方法不用创建对象,使用里面的方法直接 math.方法名 就行
常用方法
Abs,ceil,floor,round,max,minm,pow,sqrt,cbrt,random

Abs要注意参数的类型 int有取值范围
超过了不会报错,但显示错误结果
很大的数就用absexact

Sqrt开平方,cbrt开立方
![]()
判断一个数是否为质数?看这个数开平方

System
0
Exit

currentTimeMillis
Arraycopy
细节


Runtime

runtime不能创建对象
因为一个电脑只能有一个运行环境,创建多个对象是没有实际意义的
Runtime源码里自己创建了一个对象,表示当前虚拟机的运行环境
通过getruntime获取这个对象

后面都需要用这个对象来调用其他方法


Object,objects
只有无参构造

Tostring equals clone


为啥直接打印stu结果和stu.toString相同?
Println这个方法使用了toString方法

重写toString打印对象的属性值

Equals
通常比较的是对象中的属性值,而不是地址值
所以需要重写equals,idea有模板自己生成



重要题目:

Clone克隆

要使用clone,必须重写
因为它是一个protected修饰的方法,只能被本包中的类和其他包的子类用,肯定不能在本包中(java.lang包)用,所以要用必须重写
注意返回值类型是object

并且这个类要加上cloneable接口,表示这个是一个可克隆的类
Cloneable里面是没有抽象方法的

记得u1.clone()出来的是一个object类型,强转成User

两种克隆方式
浅拷贝
基本数据类型直接拷贝
引用数据类型直接拷贝地址值
Object里面的clone是浅拷贝

深拷贝
基本数据类型直接拷贝
字符串复用
引用数据类型创建新的


实现深克隆,需要改写复写的clone方法,有点麻烦

可以借助第三方工具 gson-2.6.2.jar

Objects

Objectrs. equals源码中会对a做非空判断,a为空直接返回false


BigInteger
表示比long还大的数
字符串中必须是整数,否则会报错

valueOf细节
-16~16已经创建好对象,不会重复创建

对象一旦创建内部的数据不能发生改变

Biginteger方法



Max会返回大的那个对象,不会创建一个新的biginteger

Doublevalue
biginteger底层存储方式
转成二进制的补码
把很长的数字拆成n段放到数组中存储
32位分为1组,各组再转成十进制,放到int[]数组中

存储上限

Bigdecimal
用于小数的紧密计算

构造方法
1用字符串来创建更精确 new bigdecimal(“11”)
2 用静态方法获取 bigdecimal.valueOf(11)


Valueof()里面的数字其实就是把他变成字符串,再new出一个bigdecimal

所以

方法

四舍五入roundingmode.HALF_UP



存的是每个字符在ASCII码表上对应的数字
也有上限,就是数组最多存21亿多个元素,即21亿多位数
正则表达式

一个&表示且符号


忽略大小写(?i)


身份证正则
String regex3 = "[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[1,2]\\d|3[0,1])\\d{3}(\\d|(?i)x)";
爬虫
Pattern
Matcher


网络爬取

带条件爬取

(?=)只获取?前面的部分

(?:)获取所有数据,满足:后面的条件

(?!)不获取数据(不要Java 8,java11,java11,只要java)

贪婪爬取:java默认贪婪爬取 ab+
非贪婪数据 ab+?


正则在字符串中的用法
Matches:返回boolean
Replaceall
Spilt


正则中的分组
一个小括号就是一个分组

捕获分组

\\1 把第一组中对应字符串中的数据再拿过来比较



捕获分组
\\ &


非捕获分组
不占用组号

\\1 变红:说明java不知道哪个是第一组
