常用API
- Math
- System
- Runtime
- Object和Objects
- BigInteger和BigDecimal
- 正则表达式
Java帮我们写好的各种Java类,统称为API
不要背,只需要记一下类名和类的作用,并养成查询API帮助文档的习惯
Math
- 是一个帮助我们进行数学运算的工具类
- 私有化构造方法(外界不能创建其对象),所有方法都是静态的(直接用类名.就可以调用)
Math类的常用方法
方法名 | 说明 |
---|---|
public static int abs(int a) | 获取参数的绝对值 |
public static double random() | 返回值为double的随机值,范围 [0.0, 1.0) |
public static double ceil(double a) | 向上取整 |
public static double floor(double a) | 向下取整 |
public static int round(float a) | 四舍五入 |
public static int max(int a, int b) | 获取两个int值中的较大值 |
public static double pow(double a, double b) | 返回a的b次幂 |
System
System也是一个工具类,提供了一些与系统相关的方法
常见方法名 | 说明 |
---|---|
public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数) | 数组拷贝 |
public static void exit(int status) | 终止当前运行的Java虚拟机 |
public static long currentTimeMillis() | 返回当前系统的时间毫秒值形式 |
计算机中的时间原点
1970年1月1日 00:00:00
原因:1969年8月,贝尔实验室的程序员肯汤普逊用一个月时间开始着手创造一个全新的革命性的操作系统
使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本
随后与丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX
1970年1月1日是C语言的生日,计算机中的时间原点
我国在东八区:1970年1月1日 8:00:00
Runtime
Runtime这个类是表示当前虚拟机的运行环境,里面的方法不是静态的,所以要先获取到Runtime的对象后才能调用方法
这个类的对象不能直接new 需要使用一个静态方法获取
方法名 | 说明 |
---|---|
public static Runtime getRuntime() | 当前系统的运行环境对象 |
public void exit(int status) | 停止虚拟机 |
public int availableProcessors() | 获得当前操作系统CPU的线程数 |
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类中的方法可以被所有子类访问,所以我们要学习Object类和其中的方法
Object的构造方法
Object当中没有成员变量,所以没有带参构造(子类的共性才会向父类抽取)
public Object() 空参构造
顶级父类中只有无参构造方法,所以所有其子类(任意类)中的构造方法中都有一个隐藏的super();默认访问父类的无参构造,而不是有参构造
Object中的成员方法
方法名 | 说明 |
---|---|
public String toString() | 返回对象的字符串表示形式 ( 包名 + 类名 @ 对象的地址值) |
public boolean equals(Object obj) | 比较两个对象是否相等 |
protected Object clone(int a) | 对象克隆 |
方法的使用与底层逻辑
对象克隆(拷贝)(复制)
把A对象的属性值完全拷贝给B对象
例如电信一区到电信二区的角色克隆
基本数据类型:存储的是真实的值
引用数据类型:变量记录地址值
对象克隆一(浅克隆,浅拷贝)(完全拷贝):两个对象使用的是一个数组(隐患)
对象克隆二(深克隆,深拷贝)(一劳永逸的深克隆):二者都是创建一个新的对象,
如果是基本数据类型,把变量记录的数据值直接拷贝
但是如果是引用数据类型,就不直接拷贝地址值了,重新创建一个新的数组,把原来数组中的数据拷贝到新数组当中,但是由于字符串依旧不是手动new出来的,就会放在StringTable串池中进行管理,复用
第三方工具:gson-2.6.2.jar
选中,Ctrl + C , 回到Idea在当前模块下新建一个包,lib , library的缩写,表示我们要用到别人写的代码了,所有的都会放到 lib文件夹 中, Ctrl + V , 右键点击 , Add as Library ,OK
- 第三方写的代码导入到项目当中
- 编写代码
总结:
- toString(): 一般会重写,打印对象时如果想要打印属性的话
- equals(): 比较对象时会重写,想要比较对象属性值是否相同的话
- clone(): 默认浅克隆,如果需要深克隆就要重写或使用第三方工具类