常用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不知道哪个是第一组