常用API
Math
常用方法
代码演示
abs获取参数绝对值
System.out.println(Math.abs(88));//88
System.out.println(Math.abs(-88));//88
注意
例如int型数据的取值范围是-2147483648 ~ 2147483647,如果超出此范围则传递的负数有误,不会有与之对应的正数,利用方法absExact可判断传递的数是否正确,如错误则会报错
System.out.println(Math.absExact(-2147483650));
ceil向上取整
System.out.println(Math.ceil(10.3));//11.0
System.out.println(Math.ceil(10.6));//11.0
System.out.println(Math.ceil( - 10.3));//-10.0
System.out.println(Math.ceil( - 10.6));//-10.0
floor向下取整
System.out.println(Math.floor(10.3));//10.0
System.out.println(Math.floor(10.6));//10.0
System.out.println(Math.floor(-10.3));//-11.0
System.out.println(Math.floor(-10.6));//-11.0
round四舍五入
System.out.println(Math.round(10.3));//10
System.out.println(Math.round(10.6));//11
System.out.println(Math.round(-10.3));//-10
System.out.println(Math.round(-10.6));//-11
max获取两个int型整数中的较大值
System.out.println(Math.max(1, 2));//2
获取两个int型中的较小值用min方法
pow返回a的b次幂的值
System.out.println(Math.pow(2, 3));//8.0
如果第二个参数为0~1之间的小数相当于开根号
开二次跟用方法sprt,立方根用方法cbrt
System.out.println(Math.sprt(4));//2
System.out.println(Math.cbrt(8));//2
random获取随机数
for (int i = 0; i < 10; i ++)
System.out.println(Math.floor(Math.random() * 100) + 1);//获取1~100之间的随机数
System
常用方法
代码演示
exit终止当前运行的JVM
System.exit(0);
System.out.println("Hello~");
//进程已结束,退出代码0
方法的形参:状态码
0:表示JVM是正常停止的
非0:表示JVM是异常停止的
currentTimeMillis返回当前系统的时间毫秒值形式
System.out.println(System.currentTimeMillis());//1673943899015
毫秒值是从1970-1-1至今的时间
arraycopy拷贝数组
int [] a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int [] b = new int [5];
System.arraycopy(a, 0, b, 0, 5);
目的:将a数组中的前5个数拷贝到b数组中
参数含义
数据源,要拷贝的数组
从数据源中的哪个索引开始拷贝
目的地,拷贝到的数组
目的数组的开始索引
拷贝个数
Runtime
只能有一个对象
常用方法
代码演示
getRuntime当前系统运行对象
Runtime r = Runtime.getRuntime();
exit停止JVM
Runtime.getRuntime().exit(0);
availableProcessors获得CPU的线程数
System.out.println(Runtime.getRuntime().availableProcessors());//8
maxMemory JVM能从系统中获取的总内存大小(单位为byte)
System.out.println(Runtime.getRuntime().maxMemory() / 1024 / 1024);//打印出的数值单位为MB
totalMemory JVM已经从系统中获取的总内存大小(单位为byte)
System.out.println(Runtime.getRuntime().totalMemory() / 1024 / 1024);
freeMemory JVM剩余的内存大小(单位为byte)
System.out.println(Runtime.getRuntime().freeMemory() / 1024 / 1024);
exec运行cmd命令(此方法现在已弃用)
Runtime.getRuntime().exec("notepad");//打开记事本
shutdown:关机(必须加上参数才能使用)
-s:在一分钟之后关机
-s-t + 指定时间:在指定时间后关机(单位为秒)
-a:取消关机
-r:重启电脑
Object
Object是Java中的顶级父类,所有类都直接或间接的继承于Object类,其类中的方法可以被所有子类访问
常用方法
在顶级父类中无构造方法(无相同元素)
代码演示
toString返回对象的字符串形式
Object o = new Object();
String s = o.toString();
System.out.println(s);//java.lang.Object@7b23ec81
Student s = new Student();
String s1 = s.toString();
System.out.println(s1);//Test.Student@6acbcfc0
当使用sout打印一个对象的时候,底层会调用对象的toString方法,将对象转变为字符串,然后再打印到控制台上并进行换行处理,默认情况下,打印出来的为对象地址值。如果想要打印出来对象的属性值,需要重写toString方法
equals比较两个对象是否相等
String s = "abc";
StringBuilder sb = new StringBuilder("abc");
boolean b1 = s.equals(sb);//false
boolean b2 = sb.equals(s);//false
第一个false:equals方法是s调用的,所以为String类中的方法,先判断参数是否为字符串,不是直接返回false,如果是再比较内部属性
第二个false:equals方法是sb调用的,所以为Object类中的方法,相当于使用==比较两个对象的地址值是否相同
clone对象克隆
把A对象的属性值完全拷贝给B对象
浅克隆:无论对象内部属性值是基本数据类型还是引用数据类型都完全拷贝过来(基本数据类型复制值,引用数据类型复制地址)
弊端:改变了一个引用数据类型中的值,两个都要改变
深克隆:基本数据类型完全拷贝,字符串复用,引用数据类型重新创建新的(基本数据类型复制值,引用数据类型重新开辟一块新的空间。但由于String类除了new一个对象地址不同,所以String类还是引用原来的地址)
Object类中的clone是浅克隆
Objects
Objects是一个对象工具类
常用方法
代码演示
equals
boolean b = Objects.equals(s1, sb);
方法会先判断s1是否为null,如果是则直接返回false
如果不为null,则再次调用equals方法
BigInteger
常用方法
代码演示
Random r = new Random();
BigInteger bigInteger = new BigInteger(4, r);//[0, 15]
BigInteger bigInteger = new BigInteger("1111111111111111111111111111111111111");
BigInteger bigInteger = new BigInteger("101", 2);//5
在使用第三种方法时,如果获取的是二进制,前面字符串出现0,1意外的数会报错
在静态方法获取BigInteger对象时,BigInteger对常用数字(-16~16)进行了优化,即提前把-16~16的BigInteger对象创建好,如果多次获取不会重新创建新的
存储上限:42亿的21亿次方
原因:数组中能存储的最大元素个数为21亿多,数组中每一位能表示的最大数字为42亿多,但此数字已超出计算机的存储空间,所以可以认为BigInteger无上限
BigDecimal
类型 | 占用字节数 | 总bit位数 | 小数部分bit位数 |
float | 4 | 32 | 23 |
double | 8 | 64 | 52 |
作用
用于小数的精确计算
用来表示很大的小数
BigDecimal b1 = new BigDecimal("0.01");
BigDecimal b2 = new BigDecimal("0.02");
System.out.println(b1.add(b2));//0.03
BigDecimal b3 = new BigDecimal(0.01);
BigDecimal b4 = new BigDecimal(0.02);
System.out.println(b3.add(b4));//0.03000000000000000062450045135165055398829281330108642578125
使用BigDecimal直接转换double数据类型时,数据会不准确,在实际
常用方法
正则表达式
作用:用来筛选符合规则的字符串
注意:一个符号只能匹配一个字符,多了,少了都会报错
System.out.println("a".matches("[abc]"));//true
System.out.println("d".matches("[abc]"));//false
System.out.println("d".matches("[^abc]"));//true
System.out.println("a".matches("[^abc]"));//false
System.out.println("A".matches("[a-z A-Z]"));//true;
System.out.println("1".matches("[a-z A-Z]"));//false
System.out.println("兔年大吉".matches("...."));//true
System.out.println("钱兔无量".matches("..."));//false