【java】【面对对象高级6】常用API(Math、System、Runtime、BigDecimal、JDK8之前与之后传统的日期与时间 、Arrays、Lambda表达式、方法引用(jdk8))

目录

1 Math 类

1.1 作用

1.2 Math类常见方法

2 System类

2.1 作用

 2.2 System类常见方法

2.2.1 exit 终止当前运行的java虚拟机

2.2.2 currentTimeMillis返回当前系统的时间毫秒值形式

 2.2.3 拓展知识:时间毫秒值起点来源

3 Runtime

3.1 作用

3.2 API 说明

3.3 Runtime常见方法

4 BigDecimal

 4.1 作用

 4.2 BigDecimal常见方法

5 Date(JDK8之前)

5.1 作用

 5.2 API 说明

5.3 Date常见方法 

6 SimpleDateFormat

6.1 作用

6.2 API 说明

6.3 SimpleDateFormat(JDK8之前)

 6.4 练习

 7 Calendar (JDK8之前)

7.1 作用

7.2 API 说明

7.3 Calendar常见方法 

8 LocalDate LoaclTime LocalDateTime(JDK8之后)

8.1 作用

8.2 常见方法

8.2.1 LocalDate

8.2.2 LocalTime 

 8.2.3 LocalDateTime

9 Zoneld ZoneDateTime(JDK8之后)

9.2 常见方法

9.2.1 ZoneId && ZoneDateTime

10 Instant(JDK8之后)

10.1 作用

10.2 常见方法 

11 DateTimeFormatter(JDK8之后)

11.1 作用

11.2 常见方法 

11.2.1 ofPattern(时间格式)获取格式化器对象

 11.2.2 format(时间对象)格式化时间 

 11.2.3 format (格式化时间) && parse(解析时间)​编辑

 12 Period(JDK8之后)

12.1 作用

12.2 常见方法

 13 Duration (JDK8之后)

13.1 作用

13.2 常见方法

14 Arrays(为lambda学习铺垫)

14.1 作用

 14.2 常见方法

 14.3 扩展 数组中存储的是对象,如何排序

 14.3.1 定义一个学生对象

 14.3.2 数组对象排序

14.3.2.1 方法一

14.3.2.2 方法二

15 Lambda表达式 用来简化函数式接口的匿名内部类

15.1 作用

 15.1.1 原代码

 15.1.2 使用Lambda改造

15.2 Lambda表达式的省略规则

16 方法引用::(JDK8新特性)进一步简化Lambda表达式

16.1 静态方法的引用

16.2 实例方法的引用

16.3 特定类型方法的引用

16.4 构造器的引用(了解)

17 JDK8新增的时间API 好处


前言:【java】【面对对象高级6】常用API(Math、System、Runtime、BigDecimal、JDK8之前与之后传统的日期与时间 、Arrays、Lambda表达式、方法引用(jdk8))

1 Math 类

1.1 作用

1.2 Math类常见方法

 

 

2 System类

2.1 作用

 2.2 System类常见方法

2.2.1 exit 终止当前运行的java虚拟机

2.2.2 currentTimeMillis返回当前系统的时间毫秒值形式

 2.2.3 拓展知识:时间毫秒值起点来源

3 Runtime

3.1 作用

3.2 API 说明

 

 

3.3 Runtime常见方法

 

 

 红色波浪使用alt+enter抛异常

 这种配置到环境变量可直接启动

 

4 BigDecimal

 4.1 作用

 4.2 BigDecimal常见方法

 

package com.runa.staticdemo;

import java.awt.geom.Arc2D;
import java.math.BigDecimal;
import java.math.RoundingMode;

public class TestBigD {
    public static void main(String[] args) {
        double a = 0.1;
        double b = 0.2;
        double c = a + b;
        System.out.println(c);
        System.out.println("--------------------------------");

        // 1 把他们变成字符串封装成BigDecimal对象来运算
//        BigDecimal a1 = new BigDecimal(Double.toString(a));
//        BigDecimal b1 = new BigDecimal(Double.toString(b);
        BigDecimal a1 = BigDecimal.valueOf(a);
        BigDecimal b1 =  BigDecimal.valueOf(b);

        BigDecimal c1 = a1.add(b1); //加
        System.out.println(c1);
        BigDecimal c2 = a1.subtract(b1); //减
        System.out.println(c2);
        BigDecimal c3 = a1.multiply(b1); //乘
        System.out.println(c3);
        BigDecimal c4 = a1.divide(b1); //除
        System.out.println(c4);


        BigDecimal a5 = BigDecimal.valueOf(0.1);
        BigDecimal b5 =  BigDecimal.valueOf(0.3);
        BigDecimal c5 = a5.divide(b5,2, RoundingMode.HALF_UP); //除
        System.out.println(c5);

        // 把BigDecimal 转成double类型数据
        double rs = c5.doubleValue();
        System.out.println(rs);

    }

}

5 Date(JDK8之前)

5.1 作用

 5.2 API 说明

 

5.3 Date常见方法 

package com.runa.staticdemo;

import java.util.Date;

public class TestDate {
    public static void main(String[] args) {
        // 1 创建一个data对象,代表系统当前时间信息
        Date d = new Date();
        System.out.println(d);
        // 2 拿到时间毫秒值
        long time = d.getTime();
        System.out.println(time);
        // 3  把时间毫秒值转换成日期对象, 2s之后的时间是多少
        time += 2 *1000;
        Date d2 = new Date(time);
        System.out.println(d2);
        
        // 3 直接把时间对象时间通过setTime方法进行修改
        Date d3 = new Date();
        d3.setTime(time);
        System.out.println(d3);
    }
}

6 SimpleDateFormat

6.1 作用

6.2 API 说明

 

6.3 SimpleDateFormat(JDK8之前)

 

 

package com.runa.staticdemo;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;

public class TestSimple {
    public static void main(String[] args) {
        // 1 准备时间
        Date d = new Date();
        System.out.println(d);

        long time = d.getTime();
        System.out.println(time);
        // 2  格式化日期对象、和时间  毫秒值
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");
        String rs = sdf.format(d);
        System.out.println(rs);
        String rs2 = sdf.format(time);
        System.out.println(rs2);

    }
}

 

 ​​​​​​​

package com.runa.staticdemo;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;

public class TestSimple {
    public static void main(String[] args) throws ParseException {
       
        System.out.println("--------------------------------");
        // 掌握 SimpleDateFormat解析字符串时间 成为日期对象
        String dateStr = "2022-12-12 12:12:11";
        // 1 创建简单日期格式化对象,指定人时间格式 必须与被解析的时间格式一样,否则程序会出bug
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Date d2 =  sdf2.parse(dateStr);
        System.out.println(d2);
    }
}

 6.4 练习

package com.runa.staticdemo;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestSimpleDemo {
    public static void main(String[] args) throws ParseException {
        // 1 先获取时间
        String start = "2023年11月11日 0:0:0";
        String end = "2023年11月11日 0:10:0";
        String xj = "2023年11月11日 0:01:18";
        String xp = "2023年11月11日 0:10:57";

        // 2字符串的时间解析成日期对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date startDt = sdf.parse(start);
        Date endDt = sdf.parse(end);
        Date xjDt = sdf.parse(xj);
        Date xpDt = sdf.parse(xp);
        // 3 判断小皮好小贾是否秒杀成功
        // 把日期对象转成时间毫秒值
        long startTime =  startDt.getTime();
        long endTime =  endDt.getTime();
        long xjTime =  xjDt.getTime();
        long xpTime =  xpDt.getTime();
        if(xjTime >= startTime && xjTime <= endTime){
            System.out.println("小贾您秒杀成功!");
        }else {
            System.out.println("小贾您秒杀失败!");
        }
        if(xpTime >= startTime && xpTime <= endTime){
            System.out.println("小皮您秒杀成功!");
        }else {
            System.out.println("小皮您秒杀失败!");
        }
    }
}

 7 Calendar (JDK8之前)

7.1 作用

 ​​​​​​​

7.2 API 说明

 

7.3 Calendar常见方法 

 

package com.runa.staticdemo;

import java.util.Calendar;
import java.util.Date;

public class TestCalendar {
    public static void main(String[] args) {
        // 1 得到系统此刻时间对应的日历对象
        Calendar now = Calendar.getInstance();
        System.out.println(now);
        // 2 获取日历中的某个信息, 记住月份要+1
        int year = now.get(Calendar.YEAR);
        System.out.println(year);
        int days = now.get(Calendar.DAY_OF_YEAR);
        System.out.println(days);
        // 3 拿到日历中记录的日期对象
        Date d = now.getTime();
        System.out.println(d);
        // 4 拿到时间毫秒值
        long time = now.getTimeInMillis();
        System.out.println(time);

        // 5 修改日历中的某个信息
        now.set(Calendar.MONTH,9); //修改月份未10月份
        now.set(Calendar.DAY_OF_YEAR,125); //修改成一年中的第125天
        System.out.println(now);

        //  6 为某个信息增加或者减少多少
        now.add(Calendar.DAY_OF_YEAR,100);
        now.add(Calendar.DAY_OF_YEAR,-10);
        now.add(Calendar.DAY_OF_MONTH,6);
        now.add(Calendar.HOUR,12);
        System.out.println(now);
    }
}

8 LocalDate LoaclTime LocalDateTime(JDK8之后)

8.1 作用

8.2 常见方法

8.2.1 LocalDate

8.2.2 LocalTime 

 

 8.2.3 LocalDateTime

 

 ​​​​​​​

9 Zoneld ZoneDateTime(JDK8之后)

  

9.2 常见方法

9.2.1 ZoneId && ZoneDateTime

 

10 Instant(JDK8之后)

10.1 作用

10.2 常见方法 

 

 

 

11 DateTimeFormatter(JDK8之后)

11.1 作用

11.2 常见方法 

 ​​​​​​​

11.2.1 ofPattern(时间格式)获取格式化器对象

 

 11.2.2 format(时间对象)格式化时间 

 

 11.2.3 format (格式化时间) && parse(解析时间)

  

 12 Period(JDK8之后)

12.1 作用

12.2 常见方法

 

 

 13 Duration (JDK8之后)

13.1 作用

13.2 常见方法

 

 

14 Arrays(为lambda学习铺垫)

14.1 作用

 14.2 常见方法

 ​​​​​​​

 

  ​​​​​​​

补充15章节知识:

继续优化

 最简版

 14.3 扩展 数组中存储的是对象,如何排序

 

 ​​​​​​​

 14.3.1 定义一个学生对象

 14.3.2 数组对象排序

14.3.2.1 方法一

重写学生对象的toString方法

 重写学生对象的compareTo方法

  main方法

​​​​​​​

14.3.2.2 方法二

 

补充

 继续优化

 

15 Lambda表达式 用来简化函数式接口的匿名内部类

15.1 作用

 15.1.1 原代码

package com.runa.staticdemo;

public class TestL {
    public static void main(String[] args) {
        Swimming s = new Swimming() {
            @Override
            public void swim() {
                System.out.println("学生快乐的游泳");
            }
        };
        s.swim();
    }
}


interface Swimming{
    void swim();
}

 15.1.2 使用Lambda改造

package com.runa.staticdemo;

public class TestL {
    public static void main(String[] args) {
        Swimming s = () -> {
            System.out.println("学生快乐的游泳");
        };
        s.swim();
    }
}


interface Swimming{
    void swim();
}

15.2 Lambda表达式的省略规则

 见14.3.3 与14.3.2.2 

16 方法引用::(JDK8新特性)进一步简化Lambda表达式

16.1 静态方法的引用

 

16.2 实例方法的引用

 

16.3 特定类型方法的引用

 

 下图是注释//代码的优化

 再次优化:

16.4 构造器的引用(了解)

 创建一个汽车类,重写 toString方法

 主函数

优化

17 JDK8新增的时间API 好处

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值