文章目录
Math
是一个帮助我们用于进行数学计算的工具类
Math类的常用方法:
方法名 | 说明 |
---|---|
public static int abs(int a) | 获取参数绝对值 |
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次幂的值 |
public static double random() | 返回值为double的随机值,范围**[0.0, 1.0)** |
System
System也是一个工具类,提供了一些与系统相关的方法
System类的常用方法:
方法名 | 说明 |
---|---|
public static void exit(int status) | 终止当前运行的Java虚拟机 |
public static long currentTimeMillis() | 返回当前系统的时间毫秒值形式 |
public static void arraycopy(数据源数组, 起始索引, 目的地数组, 起始索引, 拷贝个数) | 数组拷贝 |
时间原点:1970年1月1日00:00:00,我国在东八区,有8小时时差,因此我们操作系统的时间原点是1970年1月1日08:00:00
arraycopy细节:
① 如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错
② 在拷贝的时候需要考虑数组的长度,如果超出范围也会报错
③ 如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型
Runtime
Runtime表示当前虚拟机的运行环境
Runtime类的常用方法:
方法名 | 说明 |
---|---|
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命令 |
注意:Runtime无法直接创建对象,因为其构造方法是私有权限的,需要通过getRuntime()
来获取对象
Object
Object是Java中的顶级父类。所有的类都直接或间接地继承于Object类
Object类中的方法可以被所有子类访问
Object的构造方法:
方法名 | 说明 |
---|---|
public Object() | 空参构造 |
Object的常用成员方法:
方法名 | 说明 |
---|---|
public String toString() | 返回对象的字符串表示形式 |
public boolean equals(Object obj) | 比较两个对象是否相等 |
protected Object clone(int a) | 对象克隆 |
toString方法的结论:如果我们打印一个对象,想要看到属性值的话,那么就重写toString方法。(因为默认的toString方法实际上是打印地址值的)
equals方法的结论:如果没有重写equals方法,那么默认使用Object中的方法进行比较,比较的是地址值是否相等。若我们需要比较属性值是否相等,就要重写equals方法
对象克隆:
把A对象的属性值完全拷贝给B对象,也叫对象拷贝,对象赋值
浅克隆:不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝过来
深克隆:基本数据类型拷贝过来,字符串复用,引用数据类型会重新创建新的
clone方法默认是浅克隆
书写细节:
① 重写Object中的clone方法(因为修饰符权限是protected,无法通过创建子类对象来调用)
② 让javabean类实现Cloneable接口
③ 创建原对象并调用clone就可以了
如果需要深克隆需要重写方法或者使用第三方工具类
Objects:
Objects是一个工具类,提供了一些方法去完成一些功能
Objects的成员方法:
方法名 | 说明 |
---|---|
public static boolean equals(Object a, Object b) | 先做非空判断,比较两个对象 |
public static boolean isNull(Object obj) | 判断对象是否为null,为null返回true |
public static boolean nonNull(Object obj) | 判断对象是否为null,跟isNull结果相反 |
equals方法细节:
① 若a, b不全为null,方法的底层会判断a是否为null,如果为null,直接返回false
② 如果a不为null,那么就会调用a的equals方法
③ 如果a是Student类型,那么最终还是会调用Student中的equals方法(如果没有重写,比较地址值;如果重写了,就比较属性值)
BigInterer
BigInterger获取对象方法:
方法名 | 说明 |
---|---|
public BigInteger(int num, Random rnd) | 获取随机大整数,范围:[0 ~ 2的num次方-1] |
public BigInteger(String val) | 获取指定的大整数 |
public BigInteger(String val, int radix) | 获取指定进制的大整数 |
public static BigInteger valueOf(long val) | 静态方法获取BigInteger的对象,内部有优化 |
细节:对象一旦创建,内部记录的值**不能发生改变,**只要进行计算就会产生一个新的BigInteger对象
建议:数字不超过long范围时使用静态方法获取对象;而超过long范围时使用第二个构造方法
静态方法获取对象细节:
① 能表示范围比较小,只能在long的取值范围之内,如果超出long的范围就不行了
② 在内部对常用的数字:-16~16进行了优化,提前把这些数字先创建好了BigInteger的对象,如果多次获取不会重新创建新的
BigInteger常见成员方法:
方法名 | 说明 |
---|---|
public BigInteger add(BigInteger val) | 加法 |
public BigInteger subtract(BigInteger val) | 减法 |
public BigInteger multiply(BigInteger val) | 乘法 |
public BigInteger divide |