JAVA学习——常用API

目录

一、Math类

二、System类

三、Runtime类

​编辑 

 四、BigDecimal类

五、Date类

​编辑 

六、SimpleDateFormat

七、Calendar

八、JDK8新增的时间API(important)

​编辑

1. LocalDate

2.LocalTime

3. LocalDateTime 

4.ZoneId

5.Instant

6.DateTimeFormatter

7. Period

8. Duration


 

一、Math类

不过多赘述,比较常用,看下图:



二、System类

public static void main(String[] args){
	//终止当前运行的java虚拟机
	//该参数作状态码按惯例,非零状态代码表示异常终止
	//System.exit(0); //人为的终止虚拟机(不要使用)
	
	//System.currentTimeMillis是时间从1970.01.01到现在的毫秒值,返回值是long
	long time = System.currentTimeMillis(); 
	System.out.println(time);
	for(int i = 0; i < 100000; i++){
	System.out.println("输出了"+i);
	}
	long time2 = System.currentTimeMillis();
	System.out.println((time2-time)/1000.0+"s"); //计算中间程序运行了多久
}

三、Runtime类

 

public static void main(String[]args)throwsIOException,InterruptedException{ 
    Runtime r = Runtime.getRuntime();
    //终止当前运行的虚拟机
    //r.exit(0);

    //获取虚拟机能够使用的处理器数
    System.out.println(r.availableProcessors());//16

    //返回java虚拟机中内存的总量
    System.out.println(r.totalMemory()/1024.0/1024.0+"MB");

    //返回java虚拟机中可用的内存量
    System.out.println(r.freeMemory()/1024.0/1024.0+"MB");

    //启动某个程序
    Process p = r.exec("E:\\bili\\bilibili\\哔哩哔哩.exe");
    Thread.sleep(5000);//让程序在这里暂停5秒后往下走
    //关闭程序
    p.destroy();

}

 四、BigDecimal类

public static void main(String[] args) {
        double a = 0.1;
        double b = 0.3;
        double c = a + b;
        System.out.println("c = " + c); // c = 0.4

        BigDecimal a1 = BigDecimal.valueOf(a);
        BigDecimal b1 = BigDecimal.valueOf(b);
        BigDecimal c1 = a1.add(b1);//加
        System.out.println("c1 = " + c1); //c1 = 0.4
        BigDecimal c2 = a1.divide(b1,2, RoundingMode.HALF_UP);//除
        System.out.println("c2 = " + c2); //c2 = 0.33
        BigDecimal c3 = a1.subtract(b1);//减 
        System.out.println("c3 = " + c3); // -0.2
        BigDecimal c4 = a1.multiply(b1);//乘
        System.out.println("c4 = " + c4); // 0.03
        double k = c2.doubleValue();//把bigdecimal转变成double类型的
        System.out.println("k = " + k); // k = 0.33
    }

五、Date类

 

 

public static void main(String[]args){
	//代表此刻的时间
	Date d1 = new Date();
	System.out.println(d1);
	
	//拿到当前方法
	System.out.println();
	Long time = d1.getTime(); //以毫秒为单位,返回从1970.1.1 00:00:00到此刻的毫秒值
	
	//两秒之后的时间
	time += 2*1000;
	
	//传入时间打印时间方法一(用构造器)
	Date d2 = new Date(time);
	System.out.println(d2);
	System.out.println();
	
	//传入时间打印时间方法二(用date里的方法)
	Date d3 = new Date();
	d3.setTime(time); //转换
	System.out.println(d3);
}

六、SimpleDateFormat

 

 

public static void main(String[] args) throws ParseException {
        Date d1 = new Date();
        System.out.println(d1); //Sat Sep 07 16:59:40 CST 2024

        System.out.println();
        long time = d1.getTime();

        SimpleDateFormat s1 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");

        System.out.println(s1.format(time)); //2024年09月07日 16:59:40 周六 下午
        System.out.println("----------------------------------------------------------");

        String str = new String("2024-08-05 23:51:25 周一 下午");

        SimpleDateFormat datestr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE a");
        Date d2 = datestr.parse(str);
        Date d3 = datestr.parse("2023-07-13 07:08:09 周二 上午");
        System.out.println(d2); //Mon Aug 05 23:51:25 CST 2024
        System.out.println(d3); //Thu Jul 13 07:08:09 CST 2023

        long d22 = d2.getTime();
        long d33 = d3.getTime();
        System.out.println(s1.format(d22));//2024年08月05日 23:51:25 周一 下午
        System.out.println(s1.format(d33)); //2023年07月13日 07:08:09 周四 上午
    }

七、Calendar

  • Calendar.getInstance()Calendar 类的一个静态方法,它返回一个 Calendar 类的实例,这个实例代表了当前的日期和时间。这个方法通常会根据默认的时区和语言环境来创建一个 GregorianCalendar 实例(GregorianCalendarCalendar 的一个具体实现,代表公历系统)。
  • 注意,月份是从 0 开始计数的,所以当我们打印月份时,需要将其加 1 以得到通常意义上的月份。
public static void main(String[] args) {
        //因为Calendar是抽象方法 所以调取getInstance()获取静态方法
        Calendar cld = Calendar.getInstance();
        System.out.println(cld); //很长的打印...

        //获取日历的某个信息
        int year = cld.get(Calendar.YEAR);
        int day = cld.get(Calendar.DAY_OF_YEAR);
        System.out.println("year = " + year); //year = 2024
        System.out.println("day = " + day); //day = 251

        //拿到日历中记录的日期对象
        Date d = cld.getTime();
        System.out.println(d); //Sat Sep 07 17:15:16 CST 2024
        
        //拿到时间毫秒值
        long time = cld.getTimeInMillis();
        System.out.println(time);

        //修改日历中的信息
        cld.set(Calendar.MONTH,7);
        cld.set(Calendar.DAY_OF_YEAR,260);
        System.out.println(cld);

        //为某个信息增加减少
        cld.add(Calendar.DAY_OF_YEAR, 100);
        cld.add(Calendar.DAY_OF_YEAR,-100);
        cld.add(Calendar.DAY_OF_MONTH,5);
        System.out.println(cld);
    }

Calendar 和 Date 类 的区别:

  • Date 是一个具体的类,可以直接实例化,用于表示特定的瞬间,精确到毫秒。
  • Calendar 是一个抽象类,不能直接实例化。它提供了一个抽象的框架,用于操作日期和时间的各个字段(如年、月、日、小时等),具体的日历系统由其子类实现,如 GregorianCalendar
  • Date 类的 API 相对简单,但不够灵活,因为它只提供了一些基本的方法来设置和获取日期和时间。
  • Calendar 类提供了更多的方法来操作日期和时间的各个部分,使得日期和时间的处理更加灵活和方便。

八、JDK8新增的时间API(important)

旧的 Date 和 Calendar 也可以用,但是建议用新的API

接下来是如何使用这些新增的API


 

1. LocalDate

public static void main(String[] args) {
        LocalDate ld = LocalDate.now();
        System.out.println(ld); //2024-09-07

        //获取对象的信息
        //年
        int year = ld.getYear(); //2024
        //月
        int month = ld.getMonthValue();//9
        //日
        int day = ld.getDayOfMonth();//7
        //一年中的第几天
        int dayofYear = ld.getDayOfYear(); //251
        //一周的第几天
        int dayofWeek = ld.getDayOfWeek().getValue(); //6

        System.out.println(year);
        System.out.println(month);
        System.out.println(day);
        System.out.println(dayofYear);
        System.out.println(dayofWeek);

        System.out.println("---------------------");
        //修改日期
        LocalDate ld1 = ld.withYear(2099);
        LocalDate ld2 = ld.withMonth(7);
        System.out.println(ld); //(明天回校咯欲哭无泪)2024-09-07 注意后面改的不会导致原来是日期变化
        System.out.println(ld1); //2099-09-07
        System.out.println(ld2); //2024-07-07

        //加法
        LocalDate ld3 = ld.plusYears(20);
        LocalDate ld4 = ld.plusMonths(2);
        System.out.println(ld3);
        System.out.println(ld4);

        //减法
        LocalDate ld7 = ld.minusYears(20);
        LocalDate ld8 = ld.minusMonths(2);
        System.out.println(ld7);
        System.out.println(ld8);

        //获取指定日期的LocalDate对象
        LocalDate l5 = LocalDate.of(2025,05,02);
        LocalDate l6 = LocalDate.of(2025,05,02);

        //判断
        System.out.println(l5.equals(l6));
        System.out.println(l5.isAfter(ld));
        System.out.println(ld.isBefore(l6));
    }

 

2.LocalTime

 

3. LocalDateTime 

 

4.ZoneId

import java.time.Clock;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.TimeZone;

public static void main(String[] args) {
        ZoneId zid = ZoneId.systemDefault();
        System.out.println(zid); //Asia/Shanghai

        //获取java支持的全部id
        System.out.println(ZoneId.getAvailableZoneIds());

        //把某个时区封装成ZoneId对象
        ZoneId zoneId1 = ZoneId.of("Europe/London");

        //ZoneateTime :带时区的时间
        //获取某个时区的ZoneDateTime对象
        ZonedDateTime now = ZonedDateTime.now(zoneId1);
        System.out.println(now); //2024-09-07T10:50:09.603952600+01:00[Europe/London]

        //获取世界标准时间
        ZonedDateTime now1 = ZonedDateTime.now(Clock.systemUTC());
        System.out.println(now1); //2024-09-07T09:50:09.605737600Z

        //获取系统默认时间
        ZonedDateTime now2 = ZonedDateTime.now();
        System.out.println(now2); //2024-09-07T17:50:09.605737600+08:00[Asia/Shanghai]

        //关于Calendar 对时区的支持 但是Calendar是可变对象 所以不用
        //Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(zoneId1));
    }

5.Instant

上图有误:plulsSeconds 、plusNanos是增加时间系列方法,equals、isBefore、isAfter是判断系列的方法 

public static void main(String[] args) {
        //拿到标准时间
        Instant ins = Instant.now();//不可变对象
        System.out.println(ins); //2024-09-07T10:06:24.348826500Z

        //获取从1970年走到现在的毫秒值
        long time = ins.getEpochSecond();
        System.out.println(time);

        //获取不到一秒的数值
        long nano = ins.getNano();
        System.out.println(nano);

        Instant ins1 = ins.plusMillis(111);
        System.out.println(ins); //2024-09-07T10:06:24.348826500Z 不变
        System.out.println(ins1);//2024-09-07T10:06:24.459826500Z
    }

6.DateTimeFormatter

对比一下DateTimeFormatter和 LocalDateTime

 

public static void main(String[] args) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");

        LocalDateTime now = LocalDateTime.now();
        System.out.println(now);

        String fmt = dtf.format(now);//正向格式化 格式化时间对象
        System.out.println(fmt);

        //反向格式化
        //格式化时间
        String fmt2 = now.format(dtf);
        System.out.println(fmt2);

        //解析时间
        String dateStr = "2099年11月11日 12:12:12";
        LocalDateTime ldt = LocalDateTime.parse(dateStr,dtf);
        System.out.println(ldt);
    }

7. Period

public static void main(String[]args){
	LocalDate start=LocalDate.of(2024,8,15);
	LocalDate end=LocalDate.of(2025,8,15);
	
	//传入两个参数
	Period period=Period.between(start,end);
	
	//计算年月日的相隔时间
	System.out.println(period.getYears());//1
	System.out.println(period.getMonths());//0 直接相减
	System.out.println(period.getDays());//0 如上
}

8. Duration

public static void main(String[]args){
	LocalDateTime start=LocalDateTime.of(2024,8,15,15,25,25,25);
	LocalDateTime end=LocalDateTime.of(2025,8,15,15,25,25,25);
	
	Duration duration = Duration.between(start,end);
	System.out.println(duration.toDays());
	System.out.println(duration.toHours());
	System.out.println(duration.toMinutes());
	System.out.println(duration.toSeconds());
	System.out.println(duration.toMinutes());
	System.out.println(duration.toNanos());
}

 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值