API
Arrays类
返回数组的内容
Arrays.toString(arr)
拷贝数组(指定范围,包前不包后)
Arrays.copyOfRange(arr, 1, 4)
拷贝数组,可以指定新数组的长度
Arrays.copyOf(arr, 10)
把数组中的原数据改为新数据又存进去。
// 把所有的价格都打八折,然后又存进去。
Arrays.setAll(prices, new IntToDoubleFunction() {
@Override
public double applyAsDouble(int value) {
// value = 0 1 2
return prices[value] * 0.8;
}
});
对数组进行排序(默认是升序排序)
Arrays.sort(prices);
Arrays操作数组时,如果数组中存储的元素类型是自定义的对象,如何排序呢
-
排序方式1:让Student类实现Comparable接口,同时重写compareTo方法。Arrays的sort方法底层会根据compareTo方法的返回值是正数、负数、还是0来确定谁大、谁小、谁相等。
@Override
public int compareTo(Student o) {
return this.age - o.age; // 按照年龄升序排列
// return o.age - this.age; // 按照年龄降序排列
}
-
排序方式2:在调用
Arrays.sort(数组,Comparator比较器);
时,除了传递数组之外,传递一个Comparator比较器对象。Arrays的sort方法底层会根据Comparator比较器对象的compare方法方法的返回值是正数、负数、还是0来确定谁大、谁小、谁相等。
Arrays.sort(students, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return Double.compare(o1.getHeight(), o2.getHeight()); // 升序
// return Double.compare(o2.getHeight(), o1.getHeight()); // 降序
}
});
Object类
Object类是Java中所有类的祖宗类
toString()方法
一般在类中重写toString()方法
@Override
public String toString(){
return "Student{"a="+a+",b"+b}";//a=a,b=b;
}
equals(Object o)方法
判断此对象与参数对象是否"相等"
s1.equals(s2)
clone() 方法
克隆:意思就是某一个对象调用这个方法,这个方法会复制一个一模一样的新对象,并返回。
浅克隆的意思:拷贝出来的对象封装的数据与原对象封装的数据一模一样(引用类型拷贝的是地址值)
Objects类
//这里会出现NullPointerException异常,调用者不能为null
System.out.println(s1.equals(s2));
//此时不会有NullPointerException异常,底层会自动先判断空
System.out.println(Objects.equals(s1,s2));
//判断对象是否为null,等价于==
System.out.println(Objects.isNull(s1)); //true
System.out.println(s1==null); //true
//判断对象是否不为null,等价于!=
System.out.println(Objects.nonNull(s2)); //true
System.out.println(s2!=null); //true
StringJoiner类
StringJoiner号称是拼接神器,不仅效率高,而且代码简洁。
StringJoiner s = new StringJoiner(",");
s.add("java1");
s.add("java2");
s.add("java3");
System.out.println(s); //结果为: java1,java2,java3
//参数1:间隔符
//参数2:开头
//参数3:结尾
StringJoiner s1 = new StringJoiner(",","[","]");
s1.add("java1");
s1.add("java2");
s1.add("java3");
System.out.println(s1); //结果为: [java1,java2,java3]
Math类
取绝对值(拿到的结果一定是正数)
Math.abs(-1)//1;
向上取整
Math.ceil(1.0000001)//2;
向下取整
Math.floor(1.999999)//1;
四舍五入
Math.round(1.4999)//1
最大最小值
Math.max(10, 20)//20
Math.min(10, 20)//10
取次方
Math.pow(2, 3)//2的3次方;
取随机数 [0.0 , 1.0) (包前不包后)
Math.random(2,4)//2,3之间取值;
System类
System.exit(0); // 人为的终止虚拟机。(不要使用)
获取当前系统的时间
System.currentTimeMillis()
Runtime类
返回与当前Java应用程序关联的运行时对象。
Runtime r = Runtime.getRuntime();
获取虚拟机能够使用的处理器数。
r.availableProcessors()
返回Java虚拟机中的内存总量
r.totalMemory() // /1024.0/1024.0 = MB
返回Java虚拟机中的可用内存量
r.freeMemory() // /1024.0/1024.0 = MB
启动某个程序,并返回代表该程序的对象。
r.exec("原神");
BigDecimal类
为了解决计算精度损失的问题,Java给我们提供了BigDecimal类
通过这个静态方法得到的BigDecimal对象是可以精确运算的
BigDecimal.valueOf(a)
加法
a.add(b)
减法
a.subtract(b)
乘法
a.multiply(b)
除法
a.divide(b)
把BigDecimal对象又转换成double类型的数据
d.doubleValue()
Instant类
作用:可以用来记录代码的执行时间,或用于记录用户操作某个事件的时间点。
获取此刻时间信息
Instant now = Instant.now();
获取总秒数
now.getEpochSecond();
DateTimeFormater类
创建一个日期时间格式化器对象
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
格式化
LocalDateTime.now();
formatter.format(now);
解析时间::解析时间一般使用LocalDateTime提供的解析方法来解析
String dateStr = "2029年12月12日 12:12:11"
LocalDateTime.parse(dateStr, formatter)
Period类
Period用来计算日期间隔(年、月、日)
// 1、创建Period对象,封装两个日期对象。
Period period = Period.between(start, end);
// 2、通过period对象获取两个日期对象相差的信息。
System.out.println(period.getYears());
System.out.println(period.getMonths());
System.out.println(period.getDays());
Duration类
Duration用来计算时间间隔(时、分、秒、纳秒)
// 1、得到Duration对象
Duration duration = Duration.between(start, end);
// 2、获取两个时间对象间隔的信息
System.out.println(duration.toDays());// 间隔多少天
System.out.println(duration.toHours());// 间隔多少小时
System.out.println(duration.toMinutes());// 间隔多少分
System.out.println(duration.toSeconds());// 间隔多少秒
System.out.println(duration.toMillis());// 间隔多少毫秒
System.out.println(duration.toNanos());// 间隔多少纳秒
下一篇