首页 > 其他分享 >学习记录24常用API

学习记录24常用API

时间:2022-11-10 12:55:23浏览次数:41  
标签:24 舍入 BigInteger 克隆 记录 对象 Object API public

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





    常用语法

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

爬虫实现

网络爬虫

带条件爬虫练习

贪婪爬取、非贪婪爬取

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

分组:内捕获分组\

外捕获分组$

非捕获分组

标签:24,舍入,BigInteger,克隆,记录,对象,Object,API,public
From: https://www.cnblogs.com/hezhipeng/p/16842590.html

相关文章

  • Cmake 相关语法记录
    CMake说明cmake的定义是什么?-----高级编译配置工具当多个人用不同的语言或者编译器开发一个项目,最终要输出一个可执行文件或者共享库(dll,so等等)这时候神器就出现了-----......
  • String常用API
    String常用API1.获取字符串长度intlength=str.length();2.根据索引,返回字符串中对应的字符charc=str.chaeAt(length-1);//可遍历字符串3.检索字符串,返......
  • 删除文件后,磁盘空间没有释放的处理记录
    问题说明:一台服务器的/分区使用率爆满了!已达到100%!经查看发现有个文件过大(50G),于是在跟有关同事确认后rm-f果断删除该文件。但是发现删除该文件后,/分区的磁盘空间压根没有......
  • Go 面试每天一篇(第 24 天)
    你好哇,又来答题啦,欢迎!一起来看下1.参考答案及解析:[124][124]我们知道,golang中切片底层的数据结构是数组。当使用s1[1:]获得切片s2,和s1共享同一个底层数组,这会导......
  • 【java技术总结】java-8新特性:日期时间 API
    Java8通过发布新的Date-TimeAPI(JSR310)来进一步加强对日期与时间的处理。在旧版的Java中,日期时间API存在诸多问题,其中有:非线程安全−java.util.Date是非线......
  • simpread-(128 条消息) js 函数柯里化 + class + async await 思想封装我们的 Api_fro
    柯里化所谓"柯里化",就是把一个多参数的函数,转化为单参数函数在项目中,例如定义了如下请求接口的方法:类中也是可以使用async和await1.柯里化封装之前//a.js文......
  • 记录一次springboot 集成 openfeign 实现模块间调用异常
    记录一次springboot集成openfeign实现模块间调用异常 问题背景product 服务作为服务端,提供了一个对外通信Fegin接口ProductClient,放在了com.imooc.product.clie......
  • 24-jmeter-计数器的使用
     前言当我们jmeter压测的时候,需要准备一批测试账号,可以先批量注册一些用户,这些用户名称按固定格式。注册的用户不能重复并且需要自增,那么可以使用计数器来实现添加注册......
  • 2022 icpc 沈阳站 记录(非题解)
    赛前大概是赛前三周才突然知道拥有了比赛机会。赛前训练和vp频率很高,有一段时间cf上都是绿的。比赛的那一周只有一天没在vp,到了周六热身赛我人都有点麻木。(可能正赛也是......
  • ZooKeeper Java API
    ZooKeeper是一个分布式应用程序协调服务,主要用于解决分布式集群中应用系统的一致性问题。它能提供类似文件系统的目录节点树方式的数据存储,主要用途是维护和监控所存数据的......