1、Math
私有化构造方法,方法都是静态的
abs(参数):取绝对值
ceil(参数):向上取整/往数轴的正方向进一,往正无穷大方向获取距离最近的整数
floor(参数):向下取整/往负无穷大方向获取距离最近的整数
round(参数):四舍五入
max(a,b):a,b中的最大值
pow(a,b):a的b次幂
random():返回值为double的随机数,范围是[0.0,1.0)
sqrt(a):返回a的平方根
cbrt(a):返回a的立方根
2、System
提供了与系统相关的方法
exit(状态码int):结束java运行的虚拟机
状态码int:0,表示当前虚拟机正常终止;非0,表示当前虚拟机非正常终止
currentTimeMillis():返回当前系统运行时间的毫秒级形式
arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数):数组拷贝
3、Runtime
表示当前虚拟机的运行环境
4、Object
只有空参构造,public Object()
public String toString():返回地址值,返回对象的字符串表示形式,打印一个对象,想要看到属性值,需要重写toString方法,在重写的方法中,将对象的属性值进行拼接
public boolean equals(Object):比较对象是否相等(比较两个对象的地址),若想要比较两个对象的属性值,需要重写
equals方法例题:
protected Object clone():把A对象里面的属性值完全拷贝给B对象
克隆方式:1、浅克隆,无论对象里面的属性是什么数据类型,都直接全部拷贝(基本数据类型拷贝内容,引用数据类型拷贝地址),Object中的克隆是浅克隆
2、深克隆,基本数据类型全部拷贝;字符串使用同一个;引用数据类型则新创建一个对象
5、Objects
equals(Object a,Object b)先做非空判断,再比较两个对象
isNull(Object obj)判断对象是否为空
nonNull(Object obj)判断对象是否为空
6、BigInteger:对象一旦创建,内部值不能改变
几乎没有上限
构造方法:
public BigInteger(int num,Random rnd):获取随机大整数,范围是【0,2的num次减1】
public BigInteger(String str):获取指定大小的整数
public BigInteger(String str,int radix):获取指定str大小的整数,进制为radix
静态方法:
public static BigInteger valueof(long val):静态方法获取BigInteger的对象,内部有优化(提前把常用数字-16~16创建好了BigInteger的对象,多次获取不会创建新的),只能取long范围内的,出了long范围会报错
当对BigInteger的对象BI进行计算时,BI是不会改变的,而是会新创建一个对象来储存结果
常见成员方法:
(BigInteger是对象,不能直接进行加减乘除和比较,所有都得用方法来进行)
7、BigDecimal
若表示的数字较大,使用构造方法;
数字不大,用静态方法。
构造方法:
public BigDecimal(double dol):可能不精确,不建议使用
public BigDecimal(String str)
静态方法:
public static Bigdecimal valueof(double val):如果val的范围是0到10的**整数**,则方法返回已经创建好的对象,不会重新new
成员方法:
8、正则表达式 Pattern
作用1:校验字符串是否满足规则
作用2:在一段文本中查找满足要求的内容
转义字符:\ 改变后面字符的原来含义,\\表示一个\,如\\d表示任意的一个数字
例如:"\\w{6,}" [a-zA-Z_0-9]至少出现6次
爬虫:
Pattern:表示正则表达式
Matcher:文本匹配器,按照正则表达式的要求去读取字符串,从头开始读,在大串中找符合匹配规则的子串
//获取正则表达式的对象
Pattern p=Pattern.complile("Java\\d{0,2}");
//获得符合正则表达式的子串
Matcher m=p.matcher(str);
//在str中找到和m相符的并在底层保存起始下标和结束下标+1,第二次调用find时会继续从结束下标处开始
boolean b=m.find();
//返回满足要求的子串,相当于SubString,包左不包右
String s=m.group();
带有选择性的数据爬虫:
String regex="Java(?=8|11|17)"//?表示括号前面的数据,=表示在java后面要添加的数据,但是在获取的时候,只获取前半部分
String regex="((?i)Java)(?=8|11|17)"//(?i)表示正则匹配的时候忽略大小写
String regex="((?i)Java)(?:8|11|17)"//获取的时候连数字一起获取
String regex="((?i)Java)(?!8|11|17)"//获取除了8,11,17之外的java
贪婪爬取和非贪婪爬取:
只写*或者+是贪婪爬取(尽可能多的获取数据)
+?和*?是非贪婪爬取
正则表达式在字符串方法中的使用
分组
分组就是一个小括号
邮箱号 “\\w+@[\\w&&[^_]]{2,6}(\\.[a-zA-Z]{2,3}){1,2}”
简易身份证号:"[1,9]\\d{16}(\\d|x|X)"
时间:“([01]\\d|2[0-3]):([0-5]\\d):([0-5]\\d)”
以左括号为基准,最左边是第一组,其次是第二组,以此类推
\\组号:将第x组的东西再拿出来用一遍
例如:
开始和结束部分的字符一样: abc123abc b456b 123789123 &!@abc&!@ abc123abd
“(.+).+\\1”
开始和结束部分的字符一样,且开始部分内部的每个字符也要一样:
“((.)\\2*).+\\1”
后续还要使用本组的数据,正则内部使用:\\组号;正则外部使用:$组号
例如:
str.replaceAll("(.)\\1+","$1")//将str中的重复部分只替换成一个
非捕获分组:仅仅把数据括起来,不占用组号
"[1,9]\\d{16}(?:\\d|x|X)"
(?:正则)获取所有
(?=正则)获取前面部分
(?!正则)获取不是指定内容的前面部分
9、时间Date类
GMT:格林威治时间
目前世界标准时间已经替换成:原子钟
中国标准时间=世界标准时间+8小时
Date类精确到毫秒,无参构造默认表示系统时间;有参构造表示指定时间(计算机的时间原点1970.1.1 8点 )
Date类中的构造方法和成员方法:
10、SimpleDateFormat类
将时间变成简单格式
把字符串表示的时间变成Date对象
格式化的时间形式要对应规定的模式: