Math:
帮助我们进行数学计算的工具类,私有化构造方法,所有的方法都是静态的
常用方法:
public static int abs/absExact(int a):获取参数的绝对值
public static double ceil(double a):向上取整,向正无穷大方向获取距离最近的整数
public static double floor(double a):向下取整,向负无穷大方向获取距离最近的整数
public static int round(float a):四舍五入
public static int max/min(int a,int b):获取两个int值中的较大/小值
public static double pow(double a,double b):返回a的b次幂的值,b一般为大于等于1的正整数
public static double random():返回值为double的随机值,范围[0.0,1.0)
System:
System也是一个工具类,提供了一些与系统相关的方法
常用方法:
public static void exit(int status):终止当前运行的Java虚拟机
public static long currentTimeMillis():返回当前系统的时间毫秒形式
public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数):数组拷贝
1.数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错
2.在拷贝时需要考虑数组的长度,如果超出范围也会报错
3.如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型
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命令
Object
Object是Java中的顶级父类,所有的类都直接或间接继承于Object类
Object类中的方法可以被所有子类访问。
构造方法:
public Object():空参构造
成员方法:
public String toString():返回对象的字符串表示形式
打印一个对象时就会调用对象内部的toString方法,把对象变成字符串
如果没有重写的话打印的内容是对象的地址值
如果想要打印输出对象的地址值就需要重写对象的toString方法
public boolean equals(Object obj):比较两个对象是否相等
如果没有重写equals方法,默认使用Object类中的方法进行比较,比较的是地址值是否相等
重写之后的equals比较的是对象内部的属性值
protected Object clone(int a):对象克隆
把A对象的属性值完全拷贝给B对象,也称为对象拷贝、对象复制
方法会在底层创建一个对象,并把原对象中的数据拷贝过去
1.重写Object中的clone方法
2.让javabean类实现Cloneable接口
3.创建对象并调用clone方法即可
浅克隆:不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝过来
深克隆:基本数据类型拷贝过来,字符串复用,引用数据类型创建新的对象
Object类中的clone方法默认是浅克隆,如果需要深克隆的话需要重写clone方法
Objects工具类:
成员方法:
public static boolean equals(Object a,Object b):先做非空判断,比较两个对象
1.方法底层会判断s1是否为null,如果为null直接返回false
2.如果s1不为null,利用s1再次调用equals方法
3.如果没有重写equals方法,则比较地址值,如果重写则比较属性值
public static boolean isNull(Object obj):判断对象是否为null,为null返回true,反之返回false
public static boolean nonNull(Object obj):判断对象是否为null,和isNull结果相反
BigInteger:
在Java中整数有四种类型:byte,short,int,long
数据范围超出long后需要使用BigInteger
BigInteger一旦创建对象后其内部的值不能被改变
构造方法:
public BigInteger(int num,Random rnd):获取随机大整数,范围:[0~2的num次方-1]
public BigInteger(String val):获取指定的大整数
字符串内部必须是整数,否则会报错
public BigInteger(String val,int radix):获取指定进制的大整数
字符串内部必须是整数,否则会报错
字符串中的数字必须要和进制符合(二进制只能为0或1)
public static BigInteger valueof(long val):静态方法获取BigInteger对象 内部有优化
能表示的范围比较小(在long的取值范围内)
在内部对常用的数字进行了优化(-16~16),多次获取不会创建新的对象
1.如果BigInteger表示的数字没有超出long的表示范围,可以使用静态方法获取
2.如果BigInteger表示的超出long的范围,可以使用构造方法获取
3.对象一旦创建,BigInteger内部的记录值不能发生改变
4.只要进行计算就会产生一个新的BigInteger对象
成员方法:
public BigInteger add(BigInteger val):加法
public BigInteger subtract(BigInteger val):减法
public BigInteger multiply(BigInteger val):乘法
public BigInteger divide(BigInteger val):除法,获取商
public BigInteger[] divideAndRemainder(BigInteger val):除法,获取商和余数
public boolean equals(Object o):比较是否相同
public BigInteger pow(int exponent):次幂
public BigInteger max/min(BigInteger val):返回较大值/较小值
public int intValue(BigInteger val):转换为int类型整数,超出范围有误
BigDecimal:
用于小数的精确运算以及表示很大的小数
构造方法:
public BigDecimal(String val):获取指定的BigDecimal,能够确保数据的精确
字符串内部必须是整数,否则会报错
public static BigDecimal valueof(double val):静态方法获取BigDecimal对象
1.如果表示的数字没有超出double的范围,建议使用静态方法valueOf获取对象
2.如果表示的数字超出double的范围,建议使用构造方法获取对象
3.如果传递的是0~10之间的整数,那么会返回已经创建好的对象
成员方法:
public BigDecimal add(BigDecimal val):加法
public BigDecimal subtract(BigDecimal val):减法
public BigDecimal multiply(BigDecimal val):乘法
public BigDecimal divide(BigDecimal val):除法,获取商
public BigDecimal divide(BigDecimal val,精确几位,舍入模式):除法,获取商
舍入模式:
UP:远离零方向舍入
DOWN:靠近零方向舍入
HALF_UP:四舍五入