javase加强-常用API

本文介绍了Java中的API操作,如Arrays类的常用方法如数组拷贝、排序,以及Object类、Math类、System类、Runtime类、BigDecimal、Instant、DateTimeFormatter、Period和Duration类的重要功能。讲解了如何处理数组内容、对象比较、时间操作和精度计算等关键知识点。
摘要由CSDN通过智能技术生成

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());// 间隔多少纳秒

下一篇

javase加强-算法与集合-CSDN博客

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值