学习记录24常用API

Math\System\Runtime\Object\BigInteger\BigDecima\正则表达式(爬虫、捕获)

主要记忆类名作用

Math



String

时间原点:1970年1月1日 08:00:00
1秒=1000毫秒
1毫秒=1000微秒
1微秒=1000纳秒



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

Runtime这个方法不是静态的,所以想要获取这个方法必须先创建它的对象。但是这个类的对象不能直接创建,而是通过一个getRuntime()的方法获得的
以下这些方法,都是通过Runtime的对象获得的

  • public static Runtime getRuntime() 当前系统的运行环境对象
    这样设计有一个好处就是,这个类每次返回的都是同一个类。因为运行环境只能有一个。创建多个对象是没有意义的
  • public void exit(int static) 停止虚拟机;这与System中的一样,System中的底层实现,其实就是调用这个
  • public int availableProcessors() 获取CPU的线程数;比如,单核八线程,返回值就是8
  • public long maxMemory() JVM能从系统中获取总内存大小(单位:byte)
  • public long totalMemory() JVM已经从系统中获取内存的大小(单位:byte)
  • public long freeMemory() JVM剩余内存大小(单位:byte)
  • public Process exec(String command) 运行cmd命令

Object

Object是java中的顶级父类。所有类都直接或间接地继承于Object类
没有带参构造,只有一个无参构造
Object中的成员方法,一共有11个,先学的三个

  • public String toString() 返回对象的字符串表示形式
  • public boolean equals() 比较两个对象是否相等
    一定注意方法重写,方法重写过后,对象调用同名方法,进行的具体行为可能不同

    当方法重写过后,如果是想要进行内容的比较,首先会比较对象类型一不一样;如果不一样,那么就算是相同的内容,对象类型不同,也会返回false;所以,可以看出,底层在判断的时候是有选择性的
  • protected Object clone() 对象克隆
    把对象A的属性值完全拷贝给B对象,也叫对象拷贝,对象复制
    clone方法只能被本包中的类,以及本类的子类调用,所以如果需要调用clone这个方法,那么我们就必须要重写方法
    首先:在目标类当中重写clone这个方法(原因是,Clone这个类使用protected修饰的),并实现Cloneable接口
    其次:在重写方法中调用父类中的clone方法
    而后:让本类实现一个接口Cloneable,这个接口没有任何的方法。当一个接口没有任何的方法,说明这个接口的作用,是一个标记性接口

    浅克隆
    基本数据类型在克隆以后,克隆的是数据值;而引用数据类型克隆的是地址值,所以,当我们克隆一个数组时,克隆的是相同的地址值,那么对数组的操作是同步的
    深克隆
    对于基本数据类型,与前者相同,对于引用数据类型,深克隆会重新创建一个对象,把原来对象中的数据全部都克隆到新对象中,他们的地址值不同,对克隆对象的操作不影响原对象

Object中的Clone是浅克隆;深克隆需要自己在目标类当中重写方法:1.创建新的引用数据类型的承载者;2.数据复制
克隆方式:

上面自己写的深克隆方法,在面对二维数组时,就还会是旧的数组地址。解决方法是利用第三方代码。

Objects

  • public static boolean equals(Object a, Object b) 先做非空判断,比较两个对象
  • public static boolean isNull(Object obj) 判断对象是否为null,为null返回ture,反之相反
  • public static boolean nonNull(ObObject obj) 判断对象是否为null,与isNull结果相反

BigInteger

在java当中,整数有四个类型:byte、short、int、long
在底层占用字节个数:byte一个字节、short两个字节、int四个字节、long八个字节
以上的整数是有范围的,当我们需要表示超出范围的整数时,我们就用BigInteger来表示,BigInteger的上线非常大

BigInteger构造方法

  • public BigInteger(int num, Random rnd) 获取随机大整数。范围:0~2的num次方减1;Random rnd表示传进去一个随机Random对象就行
  • public BigInteger(String val) 获取指定的大整数
  • public BigInteger(String val, int radix) 获取指定进制的大整数
  • public static BigInteger valueOf(long val) 静态方法获取BigInteger的对象,内部有优化

BigInteger成员方法




BigDecimal

程序在对一些数据进行计算时会出现计算精度丢失的现象,比如:
(1):0.09+0.01所得到的结果是0.0999999999999999999999
(2):0.216-0.1所得到的结果是0.1159999999999999999999
(3):0.226+0.01所得到的结果是0.00226000000000000000003
(4):0.09/0.1所得到的结果是0.8999999999999999999999
原因是:计算机当中的运算都是转化成为二进制进行计算,而后再转化为十进制进行展示
0.9的二进制表示有45位;0.226的二进制表示有55位;然而float能表示的最大位是23位,double能表示的最大位是52位,那么,在这种情况下,多出的位就会被去掉,进而造成了精度丢失
一些实际问题中的计算,是不允许精度丢失的,比如银行中面临的贷款、利息、飞机火箭零件精密度等等

BigDecimal的作用:

  • 用于小数的精确计算
  • 用来表示很大的小数
    父类是Number,间接父类是Object

BigDecimal成员方法

舍入模式
CEILING 向正无限大方向舍入的舍入模式。
DOWN 向零方向舍入的舍入模式。
FLOOR 向负无限大方向舍入的舍入模式。
HALF_DOWN 向最接近教字方向舍入的舍入模式,如果与两个相等数字的距离相等,则向下舍入。
HALF_EVEH向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。
HALF_UP 向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。
HALF_EVEN 用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。
HALF_UP 远离零方向舍入的舍入模式。

BigDecimal存储方式

以0.226为例,BigInteger是以每32位分成一组,当遇见二进制有几百几千位的数,那么这种存储效率非常的低;
BigDecimal底层实际上也是一个数组,将字符串中的字符逐个获取,通过ASCII码表获取对应数字表示并存放至数组

正则表达式

什么是正则表达式?
正则表达式可以校验字符串是否满足一定的规则,并用来校验数据格式的合法性
eg.
需求:现在需要校验一个qq号码是否正确
规则:6~20位以内,0不能开头,必须全部是数字

由上可以看出,正则表达式的代码非常简洁

正则表达式的作用

校验字符串是否满足规则

  • []:代表范围,[12kj],表示只能取1、2、k、j中的一个;而[^12kj],除了1、2、k、j字符,其他字符都可以取,只能取一个
    [a-zA-Z] (这里包含了两部分):az以及AZ,其中的一个字符,包含边界
    [a-z[A-Z]]:与上面意思相同
    [a-z&&[def]]:a-z和def这三个字符的交集,结果其实就是:def





    常用语法

在一段文本中查找满足要求的内容(爬虫)

爬虫实现

网络爬虫

带条件爬虫练习

贪婪爬取、非贪婪爬取

正则表达式进行替换,利用正则表达式切割字符串

分组:内捕获分组\

外捕获分组$

非捕获分组

posted @   BattleTrumpet  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示