拿捏Java:常用API

88 阅读5分钟

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

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

image.png

4、Object

只有空参构造,public Object()
public String toString():返回地址值,返回对象的字符串表示形式,打印一个对象,想要看到属性值,需要重写toString方法,在重写的方法中,将对象的属性值进行拼接
public boolean equals(Object):比较对象是否相等(比较两个对象的地址),若想要比较两个对象的属性值,需要重写

equals方法例题: image.png

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次减1public 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是对象,不能直接进行加减乘除和比较,所有都得用方法来进行) image.png

7、BigDecimal

若表示的数字较大,使用构造方法;
数字不大,用静态方法。
构造方法:
public BigDecimal(double dol):可能不精确,不建议使用
public BigDecimal(String str)
静态方法:
public static Bigdecimal valueof(double val):如果val的范围是010的**整数**,则方法返回已经创建好的对象,不会重新new

成员方法:
image.png

8、正则表达式 Pattern

作用1:校验字符串是否满足规则
作用2:在一段文本中查找满足要求的内容

image.png image.png

 转义字符:\ 改变后面字符的原来含义,\\表示一个\,如\\d表示任意的一个数字

image.png

例如:"\\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
  
  贪婪爬取和非贪婪爬取:
  只写*或者+是贪婪爬取(尽可能多的获取数据)
  +?和*?是非贪婪爬取
  

正则表达式在字符串方法中的使用 image.png

分组

分组就是一个小括号
邮箱号 “\\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类中的构造方法和成员方法:

1709127344779.png

10、SimpleDateFormat类

将时间变成简单格式
把字符串表示的时间变成Date对象   

image.png

格式化的时间形式要对应规定的模式:   

image.png