Java常用类库
1. java.util.Objects
此类包含static实用程序方法,用于操作对象或在操作前检查某些条件。 这些实用程序包括null或null方法,用于计算对象的哈希代码,返回对象的字符串,比较两个对象,以及检查索引或子范围值是否超出范围。
常用内置方法:
- equals(Object a, Object b)
判断两个参数是否相等, 常用于子类重写
例:
String s1 = "123";
String s2 = "456";
System.out.println(s1.equals(s2)); // false
- hashCode(Object o)
返回参数(对象)的哈希码 - isNull(Object obj)
判断参数是不是空,是返回true反之false
例:
Person p1 = null;
System.out.println(Objects.isNull(p1)); // true
-
nonNull(Object obj)
判断参数是不是非空,是返回true反之false -
requireNonNull(T obj)
检查指定的对象引用是否不是 null ,如果是抛出空指针异常(NPE),反之返回obj -
requireNonNull(T obj, String message)
检查指定的对象引用是否不是 null ,如果是抛出自定义异常(message),反之返回obj -
toString(Object o)
返回参数对象的string形式,如果是null则返回"null"
常用于子类重写
2. java.lang.Math
类Math包含用于执行基本数字运算的方法,例如基本指数,对数,平方根和三角函数。
内置常量:
- static double E
double值自然数e - static double PI
double值圆周率π
常用内置方法:
- abs(double/float/int/lang a)
返回double/float/int/lang类型的参数的绝对值 - min(a, b), max(a, b)
ab参数类型可以是double/float/int/lang
返回a,b两数中的最小值(min)或最大值(max) - round(a)
a可以是float/double
返回四舍五入的值
例:
System.out.println(Math.round(100.5)); // 101
System.out.println(Math.round(-100.5)); //-100
- floor(a) 和 ceil(a)
a可以是float/double
floor(a)返回小于等于参数的最大整数
ceil(a)返回大于等于参数的最大整数
例:
System.out.println(Math.ceil(100.5)); // 101.0
System.out.println(Math.ceil(-100.5)); //-100.0
System.out.println(Math.floor(100.5)); // 100.0
System.out.println(Math.floor(-100.5)); //-101.0
-
random()
返回double类型的0到1之间的随机数 -
pow(double a, double b)
返回a的b次方的值 -
sqrt(double a)
返回a的正确舍入正平方根
3. java.util.Arrays
该类包含用于操作数组的各种方法(例如排序和搜索)。
常用方法:
- toString(array)
打印数组array的String形式
例:
int[] array = {1,2,3,4,5,6,7};
System.out.println(Arrays.toString(array)); // [1, 2, 3, 4, 5, 6, 7]
- sort(array)
数组array的数据类型可以是byte/char/double/float/short/int/long
对数组array进行升序排序
例:
int[] array = {7,5,6,4,3,1,2};
Arrays.sort(array);
System.out.println(Arrays.toString(array)); // [1, 2, 3, 4, 5, 6, 7]
- sort(array, int fromIndex, int toIndex)
按升序对数组的指定范围进行排序。包括fromIndex不包括toIndex(从fromindex开始到toindex之前)
数组array的数据类型可以是byte/char/double/float/short/int/long
例:
int[] array = {7,5,6,4,3,1,2};
Arrays.sort(array, 1, 6);
System.out.println(Arrays.toString(array)); // [7, 1, 3, 4, 5, 6, 2]
-
copyOf(original, int newLength)
数组original的数据类型可以是所有基础数据类型和引用数据类型
对原数组进行动态扩容到新的长度(newLength) -
copyOfRange(original, int from, int to)
数组original的数据类型可以是所有基础数据类型和引用数据类型
将指定数组的指定范围(包括fromIndex不包括toIndex)复制到新数组中。
4. java.math.BigDecimal
此类用于数学精确计算
在java中直接用double类型进行运算会有误差
例如:
System.out.println(0.1+0.2); // 0.30000000000000004
这是就需要运用BigDecimal类进行精密计算
常用构造方法:
BigDecimal(String val){}
例:
BigDecimal b1 = new BigDecimal("0.1" );
BigDecimal b2 = new BigDecimal("0.2" );
常用方法:
- 加减乘除
add(BigDecimal augend)
subtract(BigDecimal subtrahend)
multiply(BigDecimal multiplicand)
divide(BigDecimal divisor)
例:
BigDecimal b1 = new BigDecimal("0.1" );
BigDecimal b2 = new BigDecimal("0.2" );
BigDecimal b3 = b1.add(b2);
System.out.println(b3); // 0.3
- 数据转换
intValue()
byteValue()
doubleValue()
shortValue()
longValue()
floatValue()
将BigDecimal对象转化为相应的数据类型
5. java.util.Date
Date类表示特定的时刻,精度为毫秒。
常用构造方法
- Date(){}
对Date对象进行初始化, 使其表示当前时间,精确到毫秒
例:
// 创建一个当前时间的Date
Date date = new Date();
System.out.println(date.toString()); // Wed Jul 29 14:20:37 CST 2020
- Date(lang date){}
传入一个date毫秒值,表示时间,精确到毫秒
常用方法:
getTime();
返回long类型,从1970/1/1 00:00:00到现在时间的毫秒数
例:
Date date = new Date();
System.out.println(date.getTime()); // 1596003731590
6. java.text.DateFormat
用于格式化和解析日期字符串的类
DateFormat 是个抽象类, 需要用他的子类SimpleDateFormat进行实体化
构造方法
SimpleDateFormat(String pattern)
例:
/**
* y : 年
* M : 月
* d : 日
* H : 时
* m : 分
* s : 秒
*/
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm ss");
常用方法
format()
将date对象转化为字符串.
例:
SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm ss");
// 将date对象转化为字符串
String text = format.format(new Date());
System.out.println(text); // 2020年07月29日 14:29 26
parse(String str)
将日期字符串转换为date对象
例:
Date date = format.parse("2020年07月29日 14:29 26");
System.out.println(date.getTime()); // 1596004166000
7. java.util.Calendar
用于操作日历
Calender是一个抽象类,实例化需要调用getInstance()方法
例:
// calender
Calendar c1 = Calendar.getInstance();
常用方法
- get()
取出日期
// calender
Calendar c1 = Calendar.getInstance();
// get year
int year = c1.get(Calendar.YEAR);
System.out.println(year); // 2020
// get day of year
int day = c1.get(Calendar.DAY_OF_YEAR); // 今天是今年的第几天
System.out.println(day); // 211
- set()
设置日期
// set year
c1.set(Calendar.YEAR, 2021);
- add()
增加日期
// add month 计算机中日历是0 - 11月
c1.add(Calendar.MONTH, 3); // c1是七月 计算机中是6
System.out.println(c1.get(Calendar.MONTH)); // 9
- getTime()
获取日历时间表示的date对象
// getTime 获取日历时间表示的date对象
Date d = c1.getTime();
- getActualMaximum()
获得年/月/周中最大天数
// getActualMaximum 获得年/月/周中最大天数
c1.set(Calendar.MONTH, 1);
int m = c1.getActualMaximum(Calendar.DAY_OF_MONTH); // 获取一月的最大天数
System.out.println(m); // 31