一、什么是Api?以及为什么要用Api?
Api就是已经实现好的一个功能,并被封装成了一个可供调用的方法
使用Api就是避免重复和代码反复的编写,使用Api提高了开发的效率
二、Math基本的数据工具类
abs:取绝对值
1、public static int abs(int a):取绝对值(拿到的结果一定是正数)
// public static double abs(double a)
System.out.println(Math.abs(-12)); // 12
System.out.println(Math.abs(123)); // 123
System.out.println(Math.abs(-3.14)); // 3.14
ceil :向上取整
// 2、public static double ceil(double a): 向上取整
System.out.println(Math.ceil(4.0000001)); // 5.0
System.out.println(Math.ceil(4.0)); // 4.0
floor :向下取整
// 3、public static double floor(double a): 向下取整
System.out.println(Math.floor(4.999999)); // 4.0
System.out.println(Math.floor(4.0)); // 4.0
round :四舍五入
// 4、public static long round(double a):四舍五入
System.out.println(Math.round(3.4999)); // 3
System.out.println(Math.round(3.50001)); // 4
取较大值 :max 取较小值: min
// 5、public static int max(int a, int b):取较大值
// public static int min(int a, int b):取较小值
System.out.println(Math.max(10, 20)); // 20
System.out.println(Math.min(10, 20)); // 10
取次方 :pow
// 6、 public static double pow(double a, double b):取次方
System.out.println(Math.pow(2, 3)); // 2的3次方 8.0
System.out.println(Math.pow(3, 2)); // 3的2次方 9.0
取随机数 :random[0.0 , 1.0) (包前不包后)
// 7、public static double random(): 取随机数 [0.0 , 1.0) (包前不包后)
System.out.println(Math.random());
三、System 跟系统相关工具类
exit: 终止虚拟机的运行
// 1、public static void exit(int status):
// 终止当前运行的Java虚拟机。
// 该参数用作状态代码; 按照惯例,非零状态代码表示异常终止。
System.exit(0); // 人为的终止虚拟机。(不要使用)
currentTimeMillis: 获取当前系统的时间
// 2、public static long currentTimeMillis():
// 返回的是long类型的时间毫秒值:指的是从1970-1-1 0:0:0开始走到此刻的总的毫秒值,1s = 1000ms
通过currentTimeMillis来获取程序运行时长:
long time = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
System.out.println("输出了:" + i);
}
long time2 = System.currentTimeMillis();
System.out.println((time2 - time) / 1000.0 + "s");
}
gc:用于建议垃圾回收器运行。(不建议手动启动)
arrayCopy: 数组拷贝将指定源数组中的数组从指定位置复制到目标数组的指定位置
public static void main(String[] args) {
//数组拷贝
int arr[]={1,2,3,4,5};
int str[]=new int[arr.length];
System.arraycopy(arr,0,str,0,arr.length);
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]+"\t");
}
}
Objects
isNull: 判断对象是否为空
// public static Boolean isNull(对象): 判断对象是否为空
Student s1 = null;
boolean result1 = Objects.isNull(s1);
System.out.println(result1);
nonNull:判断对象是否不为空
Student s = null;
boolean result = Objects.nonNull(s);
System.out.println(result);
BigDecimal: 双精度类型double问题精准计算(常用于计算金额方面)
创建BigDecimal的两种方法
public BigDecimal(String val) 得到的BigDecimal对象是可以精确计算浮点型数据的。
BigDecimal a2 = new BigDecimal("2.2");
public static BigDecimal valueOf(double val): 通过这个静态方法得到的BigDecimal对象是可以精确运算的。是最好的方案。
double a = 2.3;
BigDecimal a1 = BigDecimal.valueOf(a);
public class Test2 {
public static void main(String[] args) {
// 目标:掌握BigDecimal进行精确运算的方案。
double a = 0.1;
double b = 0.2;
BigDecimal a1 = BigDecimal.valueOf(a);
BigDecimal b1 = BigDecimal.valueOf(b);
add: 相加
// 2、public BigDecimal add(BigDecimal augend): 加法
BigDecimal c1 = a1.add(b1);
System.out.println(c1);
subtract: 减法
// 3、public BigDecimal subtract(BigDecimal augend): 减法
BigDecimal c2 = a1.subtract(b1);
System.out.println(c2);
乘法: multiply
// 4、public BigDecimal multiply(BigDecimal augend): 乘法
BigDecimal c3 = a1.multiply(b1);
System.out.println(c3);
除法:divide
// 5、public BigDecimal divide(BigDecimal b): 除法
BigDecimal c4 = a1.divide(b1);
System.out.println(c4);
除法精准
// 6、public BigDecimal divide(另一个BigDecimal对象,精确几位,舍入模式) : 除法,可以设置精确几位。
BigDecimal d1 = BigDecimal.valueOf(0.1);
BigDecimal d2 = BigDecimal.valueOf(0.3);
BigDecimal d3 = d1.divide(d2, 2, RoundingMode.HALF_UP); // 0.33
System.out.println(d3);
BigDecimal divide = bd1.divide(参与运算的对象,小数点后精确到多少位,舍入模式);
参数1 ,表示参与运算的BigDecimal 对象。
参数2 ,表示小数点后面精确到多少位
参数3 ,舍入模式
BigDecimal.ROUND_UP 进一法
BigDecimal.ROUND_FLOOR 去尾法
BigDecimal.ROUND_HALF_UP 四舍五入
// 7、public double doubleValue() : 把BigDecimal对象又转换成double类型的数据。
//print(d3);
//print(c1);
double db1 = d3.doubleValue();
double db2 = c1.doubleValue();
print(db1);
print(db2);
}