JDK 1.8 新特性之Date-Time API

来源:请点击查看

1.8之前的日期类:

  1. 线程不安全:java.util.Date 这个类线程不安全,而且所有日期类都是可变的。
  2. 时间处理麻烦:默认的开始日期从1900年,不支持国际化,不提供时区支持,所以经常算出来的时间不是中国时间。
  3. 设计不好:java初学者接触到导包的时候,总会导错包,比如java.util和java.sql包中都有日期类,类名却是一样的。

日期和时间

Instant 本质上是一个数字时间戳。可以从a中检索当前的Instant Clock。这对于某个时间点的日志记录和持久性非常有用。
LocalDate 没有时间存储日期。存储类似“2010-12-03”的日期,可用于存储生日。
LocalTime 没有日期存储时间。存储像‘11:30‘这样的时间,可用于存储开盘或收盘时间。
LocalDateTime 存储日期和时间。这会存储类似‘2010-07-23T15:47:25.890‘的日期时间。
ZonedDateTime 使用时区存储日期和时间。如果您想要考虑到日期和时间的准确计算ZoneId,例如“欧洲/巴黎”,这将非常有用。在可能的情况下,建议使用没有时区的更简单的类。时区的广泛使用往往会给应用程序增加相当大的复杂性

其他类型

Month 用来存储一个月。这样可以隔离单个月份,例如“DECEMBER”。
DayOfWeek 用来存储一个星期的日子。这样可以隔离存储一个星期几,例如“星期二”。
Year 用来存储一年。这样可以隔离一年,例如‘2010‘。
YearMonth 用来存储年加月份的时间。这会存储一年和一个月,例如“2010-12”,并可用于信用卡到期。
MonthDay 用来存储月份和日子。它存储月份和日期,例如“12-03”,可用于存储年度活动,如生日,而不存储年份。

在连接数据库的时候,使用 Java 8 新特性 TimeDateAPI,字段对应不上,或者存入的不是时间,或者直接抛异常,请更新对应数据库的 pom 依赖,添加以下支持

Spring Data API

<!--java 8 time date 支持-->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-java8</artifactId>
    <version>5.0.12.Final</version>
</dependency>

MyBatis

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-typehandlers-jsr310</artifactId>
    <version>1.0.1</version>
</dependency>

Instant

这个类是不可变的,线程安全。

public class InstantDemo {

  public static void main(String[] args) {
    //===============================================================================
    // 1、获取当前时间戳
    //===============================================================================
    System.out.println(Instant.now());  // 2018-07-23T07:57:00.821Z

    //===============================================================================
    // 2、传入CharSequence类型,转换为instant对象
    //===============================================================================
    CharSequence text = "2010-10-31T07:57:00.821Z";
    Instant instant = Instant.parse(text);
    System.out.println(instant);  // 2010-10-31T07:57:00.821Z
    // 注意:格式不正确或者不存在该日期时,会抛出DateTimeParseException异常

    //===============================================================================
    // 3、比较时间(大于小于排序)
    //===============================================================================
    System.out.println(instant.isAfter(Instant.parse("2010-11-30T07:57:00.821Z")));
    // false 返回布尔值
    System.out.println(instant.isBefore(Instant.parse("2010-11-30T07:57:00.821Z")));
    // true 返回布尔值
    System.out.println(instant.compareTo(Instant.parse("2010-11-30T07:57:00.821Z")));
    // -1  compareTo 返回值int类型  等于返回 0 小于返回 -1 大于返回 1
    System.out.println(instant.equals(Instant.parse("2010-10-31T07:57:00.821Z")));
    // true  返回布尔值 比较两个时间是否相等

    //===============================================================================
    // 4、获取从1970-01-01T00:00:00Z到现在的秒数
    //===============================================================================
    System.out.println(instant.getEpochSecond());  // 1288511820
    // 返回值long,注意返回的是秒!不是毫秒!

    //===============================================================================
    // 5、设置时区偏移
    //===============================================================================
    OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
    System.out.println(offsetDateTime); // 2010-10-31T15:57:00.821+08:00
    // 返回值类型OffsetDateTime  我们在东八区,所以加上八小时,就是本地时间戳

  }
}

LocalDate

LocalDate是一个不可变的类,它表示默认格式(yyyy-MM-dd)的日期,线程安全。

public class LocalDateDemo {

  public static void main(String[] args) {
    //===============================================================================
    // 1、获取当前日期
    //===============================================================================
    LocalDate localDate = LocalDate.now();
    System.out.println(localDate); // 2018-07-23

    //===============================================================================
    // 2、构造LocalDate
    //===============================================================================
    CharSequence text = "2010-10-10";
    System.out.println(LocalDate.parse(text)); // 2010-10-10
    CharSequence date = "20101010";
    System.out.println(LocalDate.parse(date,DateTimeFormatter.BASIC_ISO_DATE));// 2010-10-10
    // 自定义对应格式的转换,JDK1.8给出了预定义的格式化 DateTimeFormatter.BASIC_ISO_DATE 就是其中之一
    CharSequence myDate = "2010年10月10日";
    System.out.println(LocalDate.parse(myDate,DateTimeFormatter.ofPattern("yyyy年MM月dd日"))); // 2010-10-10
    // 预定义格式没有的情况,也可以自定义
    System.out.println(LocalDate.of(2010, 10, 10));// 2010-10-10
    // 给出int类型对应的 年月日,亦可构造出LocalDate对象
    System.out.println(LocalDate.of(2010, Month.JULY, 10));// 2010-07-10
    // 月份亦可给出对应 Mouth 枚举
    System.out.println(LocalDate.ofEpochDay(123)); // 1970-05-04
    // 给出日子,计算出 从 1970-01-01 对应日子后的日期
    System.out.println(LocalDate.ofYearDay(2010, 163)); //2010-06-12
    // 传入 年,日数,计算出 对应该年份 对应日子后的日期

    //===============================================================================
    // 3、获取,年,月,日
    //===============================================================================
    System.out.println(localDate.getMonth()); // JULY  返回英文月份,对应 Mouth 枚举
    System.out.println(localDate.getMonthValue()); // 7  返回数字月份
    System.out.println(localDate.getYear()); // 2018  返回对应年
    System.out.println(localDate.getDayOfMonth()); // 23  返回对应月份中的日子
    System.out.println(localDate.getDayOfWeek()); // MONDAY  返回对应星期,对应 DayOfWeek 枚举
    System.out.println(localDate.getDayOfYear()); // 204 返回对应年份中的日子
    System.out.println(localDate.lengthOfMonth()); // 31 对应该月份有多少天
    System.out.println(LocalDate.parse("2004-02-10").lengthOfMonth());
    // 29 证明可以自动判断是否为闰年!!!
    System.out.println(localDate.lengthOfYear()); // 365 对应年份有多少天
    System.out.println(LocalDate.parse("2004-02-10").lengthOfYear());
    // 366 证明可以自动判断是否为闰年!!!

    //===============================================================================
    // 4、判断大于小于,排序,判断是否闰年
    //===============================================================================
    System.out.println(localDate.compareTo(LocalDate.parse("2000-01-01"))); // 18
    // 这里的 compareTo 方法为什么返回 18 请看下面详解!!!
    System.out.println(localDate.isAfter(LocalDate.parse("2000-01-01"))); // true
    System.out.println(localDate.isBefore(LocalDate.parse("2000-01-01"))); // false
    System.out.println(localDate.isEqual(LocalDate.parse("2000-01-01"))); // false
    System.out.println(localDate.isLeapYear());// false  返回布尔值,该年是否为闰年

    //===============================================================================
    // 5、日期的加减
    //===============================================================================
    System.out.println(localDate.plusMonths(1)); // 2018-08-23  加一个月
    System.out.println(localDate.plusMonths(-1)); // 2018-06-23 减去一个月,传入负数即可,下面的也是
    System.out.println(localDate.plusDays(1)); // 2018-07-24 加上一天
    System.out.println(localDate.plusMonths(1)); // 2018-08-23 加上一个月
    System.out.println(localDate.plusWeeks(1)); // 2018-07-30 加上一个星期

    //===============================================================================
    // 6、其他计算
    //===============================================================================
    System.out.println(localDate.withDayOfYear(123)); // 2018-05-03 计算当前年第123天的日期

  }
}

LocalTime

LocalTime是一个不可变的日期时间对象,代表一个时间,通常被看作是小时 - 秒,这个类不可变,线程安全。

public class LocalTimeDemo {

  public static void main(String[] args) {
    //===============================================================================
    // 1、获取当前时间
    //===============================================================================
    LocalTime time1 = LocalTime.now();
    System.out.println(time1); // 09:39:47.275

    //===============================================================================
    // 2、构造LocalTime
    //===============================================================================
    // 根据传入文本构造LocalTIme时间对象,格式不正确会抛出 java.time.format.DateTimeParseException 异常
    CharSequence text1 = "22:22:22";
    LocalTime localTime1 = LocalTime.parse(text1);
    System.out.println(localTime1); // 22:22:22
    // 传入自定义文本,自定义格式化 构造 LocalTime 对象
    CharSequence text2 = "11-11-11";
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH-mm-ss");
    LocalTime localTime2 = LocalTime.parse(text2, dateTimeFormatter);
    System.out.println(localTime2); // 11:11:11
    // 根据入参 时,分,秒,纳秒构造出LocalTime对象,24小时制
    // 如果入参不符合时间要求,例如传入25小时,61分钟,会抛出 java.time.DateTimeException 异常
    LocalTime time2 = LocalTime.of(13, 22);
    System.out.println(time2); // 13:22
    LocalTime time3 = LocalTime.of(14, 22, 31);
    System.out.println(time3); // 14:22:31
    LocalTime time4 = LocalTime.of(22, 43, 33, 422);
    System.out.println(time4); // 22:43:33.000000422
    // 根据分钟 构造 LocalTime 时间对象 超过最大分钟,会抛出 java.time.DateTimeException 异常
    LocalTime time5 = LocalTime.ofSecondOfDay(22324);
    System.out.println(time5); // 06:12:04
    // 根据纳秒构造LocalTime对象
    LocalTime time6 = LocalTime.ofNanoOfDay(1231);
    System.out.println(time6); // 00:00:00.000001231

    //===============================================================================
    // 3、获时,分,秒等
    //===============================================================================
    int hour = time1.getHour();
    int minute = time1.getMinute();
    int second = time1.getSecond();
    System.out.println("小时:" + hour + ",分钟:"
        + minute + ",秒数:" + second); // 小时:10,分钟:5,秒数:53

    //===============================================================================
    // 4、判断大于小于,排序,相差多少
    //===============================================================================
    // 判断时间1是否在时间2后
    boolean after = time1.isAfter(time2);
    System.out.println(after); // false
    // 判断时间1是否在时间2前
    boolean before = time1.isBefore(time2);
    System.out.println(before); // true
    // 排序比较,前者大于后者返回 1,否则 -1,相等 0
    int i = time1.compareTo(time2);
    System.out.println(i); // -1
    // 时间1和时间2相差多少小时,分钟,秒,大于为正数,小于为负数(坏处就是分跟分加减,秒跟秒加减)
    long betweenHours = ChronoUnit.HOURS.between(time1, time2);
    long betweenSeconds = ChronoUnit.SECONDS.between(time1, time2);
    long betweenMinutes = ChronoUnit.MINUTES.between(time1, time2);
    System.out.println("相差小时:" + betweenHours + " 分钟: " +
        betweenMinutes + " 秒数:" + betweenSeconds); // 相差小时:2 分钟: 178 秒数:10707

    //===============================================================================
    // 5、时间的加减,修改
    //===============================================================================
    // 加两小时,减去传入负数即可
    LocalTime time7 = time3.plusHours(2);
    System.out.println(time7); // 16:22:31
    // 减去10分钟
    LocalTime time8 = time3.plusMinutes(-10);
    System.out.println(time8); // 14:12:31
    // 加上30秒
    LocalTime time9 = time3.plusSeconds(30);
    System.out.println(time9); // 14:23:01
    // 修改小时
    LocalTime time10 = time3.withHour(23);
    System.out.println(time10); // 23:22:31
    // 修改分钟
    LocalTime time11 = time3.withMinute(11);
    System.out.println(time11); // 14:11:31
    // 修改秒数
    LocalTime time12 = time3.withSecond(50);
    System.out.println(time12); // 14:22:50

  //===============================================================================
    // 6、两个时间之间的相差秒数,小时

 //===============================================================================
    Duration duration = Duration.between(time3, time12);
    long days = duration.toDays();
    long hours = duration.toHours();
    long millis = duration.toMillis()/1000;

  }
}

LocalDateTime

是一个不可变的日期时间对象,代表日期时间,年-月-日-时-分-秒,线程安全

public class LocalDateTimeDemo {

  public static void main(String[] args) {
    //===============================================================================
    // 1、获取当前日期时间
    //===============================================================================
    LocalDateTime localDateTime = LocalDateTime.now();
    System.out.println(localDateTime); // 2018-07-26T14:47:44.144

    //===============================================================================
    // 2、构造日期时间
    //===============================================================================
    CharSequence text = "2007-12-03T10:15:30";
    // 从一个文本字符串 获得 LocalDateTime实例
    LocalDateTime dateTime1 = LocalDateTime.parse(text);
    System.out.println(dateTime1); // 2007-12-03T10:15:30

    //===============================================================================
    // 3、获取,年,月,日,时等等
    //===============================================================================
    int dayOfMonth = localDateTime.getDayOfMonth();
    DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
    int dayOfYear = localDateTime.getDayOfYear();
    int hour = localDateTime.getHour();
    Month month = localDateTime.getMonth();
    int year = localDateTime.getYear();
    System.out.println(year + "年" + month.toString() + "月" + dayOfMonth + "日" +
        hour + "时" + "|||" + dayOfWeek + "|||" + dayOfYear);
    // 2018年JULY月31日9时|||TUESDAY|||212
  }
}

YearMonth

是一个不变的日期时间对象,表示一年和一个月的组合。 可以获得可以从年和月派生的任何字段,例如四分之一年份。类线程安全

public class YearMonthDemo {

  public static void main(String[] args) {
    //===============================================================================
    // 1、获取当前年月
    //===============================================================================
    YearMonth yearMonth = YearMonth.now();
    System.out.println(yearMonth); // 2018-07

    //===============================================================================
    // 2、构造年月
    //===============================================================================
    CharSequence text = "2018-01";
    YearMonth yearMonth1 = YearMonth.parse(text);
    System.out.println(yearMonth1); // 2018-01
    CharSequence text2 = "2018年02月";
    YearMonth yearMonth2 = YearMonth.parse(text2, DateTimeFormatter.ofPattern("yyyy年MM月"));
    System.out.println(yearMonth2); // 2018-02

    //===============================================================================
    // 3、获取,年,月
    //===============================================================================
    int year = yearMonth.getYear();
    Month month = yearMonth.getMonth();
    int monthValue = yearMonth.getMonthValue();
    System.out.println(year + "年" + monthValue + "月" + "mouth对象-》" + month);
    // 2018年7月mouth对象-》JULY

    //===============================================================================
    // 4、判断大于小于,排序,判断是否闰年
    //===============================================================================
    System.out.println(yearMonth.isAfter(yearMonth1));  // true
    System.out.println(yearMonth.isBefore(yearMonth1)); // false
    System.out.println(yearMonth.isLeapYear()); // 是否闰年 false
    System.out.println(yearMonth.compareTo(yearMonth1)); // 6 (这里为什么是6 上面有详解)

    //===============================================================================
    // 5、年月的加减,设置年月
    //===============================================================================
    YearMonth yearMonth3 = yearMonth.plusMonths(1);
    System.out.println(yearMonth3); // 2018-08
    YearMonth yearMonth4 = yearMonth.plusYears(-1);
    System.out.println(yearMonth4); // 2017-07
    YearMonth yearMonth5 = yearMonth.withMonth(5);
    System.out.println(yearMonth5); // 2018-05
    YearMonth yearMonth6 = yearMonth.withYear(2000);
    System.out.println(yearMonth6); // 2000-07
  }
}

MonthDay

是一个不变的日期时间对象,代表一年和一个月的组合。 可以获得可以从月和日派生的任何字段,线程安全。

public class MonthDayDemo {

  public static void main(String[] args) {
    //===============================================================================
    // 1、获取当前月日
    //===============================================================================
    MonthDay monthDay = MonthDay.now();
    System.out.println(monthDay); // --07-31

    //===============================================================================
    // 2、构造月日
    //===============================================================================
    CharSequence text1 = "--03-01";
    MonthDay monthDay1 = MonthDay.parse(text1);
    System.out.println(monthDay1); // --03-01
    CharSequence text2 = "11月23日";
    MonthDay monthDay2 = MonthDay.parse(text2, DateTimeFormatter.ofPattern("MM月dd日"));
    System.out.println(monthDay2); // --11-23
    MonthDay monthDay3 = MonthDay.of(2, 3);
    System.out.println(monthDay3); // --02-03
    MonthDay monthDay4 = MonthDay.of(Month.AUGUST, 22);
    System.out.println(monthDay4); // --08-22

    //===============================================================================
    // 3、获取 月,日
    //===============================================================================
    int monthValue = monthDay.getMonthValue();
    Month month = monthDay.getMonth();
    int dayOfMonth = monthDay.getDayOfMonth();
    System.out.println(monthValue + "月" + dayOfMonth + "日" + "月份-》" + month);
    // 7月31日月份-》JULY

    //===============================================================================
    // 4、判断大于小于,排序
    //===============================================================================
    System.out.println(monthDay.isAfter(monthDay1)); // true
    System.out.println(monthDay.isBefore(monthDay1)); // false
    System.out.println(monthDay.compareTo(monthDay1)); // 4 (这里为什么是4,上面有详解)

  }
}

常见需求

public class NewTimeDemo {

  public static void main(String args[]) {
    // 输入 20180101
    CharSequence str = "20040201";
    // BASIC_ISO_DATE -》ISO日期格式化,格式或解析无偏移的日期,如“20111203”。
    LocalDate localDate = LocalDate.parse(str, BASIC_ISO_DATE);

    //===============================================================================
    // 1、 这个月月末
    //===============================================================================
    System.out.println("本月月末是:" + localDate.with(TemporalAdjusters.lastDayOfMonth()));
    // 本月月末是:2004-02-29

    //===============================================================================
    // 2、 下个月月初
    //===============================================================================
    System.out.println("下月月初是:" + localDate.with(TemporalAdjusters.firstDayOfNextMonth()));
    //下月月初是:2004-03-01

    //===============================================================================
    // 3、 下个月月末
    //===============================================================================
    System.out.println("下月月末是:" + localDate.with(TemporalAdjusters.firstDayOfNextMonth())
        .with(TemporalAdjusters.lastDayOfMonth()));
    // 下月月末是:2004-03-31

    //===============================================================================
    // 4、 给年月,计算当月天数
    //===============================================================================
    CharSequence str2 = "200102";
    DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMM");
    YearMonth ym = YearMonth.parse(str2, dateTimeFormatter);
    System.out.println(ym.lengthOfMonth()); // 28

    //===============================================================================
    // 5、 日期加减天数
    //===============================================================================
    System.out.println(localDate.plusDays(-1)); // 2004-01-31

    //===============================================================================
    // 6、 日期加减月份
    //===============================================================================
    System.out.println(localDate.plusMonths(-1)); // 2004-01-01
    System.out.println(localDate.plusMonths(1)); // 2004-03-01

    //===============================================================================
    //  7、 传参月份,日子,输出修改后的
    //===============================================================================
    try {
      System.out.println(localDate.withMonth(2).withDayOfMonth(2));
      // 2004-02-02
    } catch (DateTimeException exception) {
      System.out.println("输入日期异常!");
    }
    System.out.println(localDate.withDayOfMonth(1));
    // 2004-02-01

    //===============================================================================
    //  8、 小于15日,输出该月15日,否则输出下月1日
    //===============================================================================
    System.out.println("--------------------");
    if (localDate.getDayOfMonth() < 15) {
      System.out.println(localDate.withDayOfMonth(15));
    } else {
      System.out.println(localDate.with(TemporalAdjusters.firstDayOfNextMonth()));
    }
    // 2004-02-15

  }
}

原文地址:https://www.cnblogs.com/niudaben/p/12393897.html

时间: 2024-10-17 22:49:16

JDK 1.8 新特性之Date-Time API的相关文章

java8新特性七-Date Time API

简介 Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理. 在旧版的 Java 中,日期时间 API 存在诸多问题,其中有: 非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一. 设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.text包中定义.java.util.Date同时包含日期

JDK各版本新特性总结

JDK各版本新特性总结 JDK 1.7 新特性  1.switch中可以使用string字符串了 2.<>的运用, List<String> tempList = new ArrayList<>(); 即泛型实例化类型自动推断 3.语法上支持集合,而不一定是数组 final List<Integer> piDigits = [ 1,2,3,4,5,8 ]; 对Java集合(Collections)的增强支持,摒弃了Java集合接口的实现类,如:ArrayLi

JDK 5 ~ 10 新特性倾情整理!

JDK 5 ~ 10 新特性倾情整理! 最近连 JDK11都在准备发布的路上了,大家都整明白了吗?也许现在大部分人还在用6-8,8的新特性都没用熟,9刚出不久,10-11就不用说了. 为了大家对JDK有一个全面的了解,下面我为大家整理了JDK5~10的所有关键新特性! JDK5新特性 自动装箱与拆箱 枚举 静态导入 可变参数(Varargs) 内省(introspector) 泛型(Generic) For-Each循环 JDK6新特性 Desktop类和SystemTray类 使用JAXB2来

JDK各版本新特性!

1.JDK1.5 新特性 1.自动装箱与拆箱:自动装箱的过程:每当需要一种类型的对象时,这种基本类型就自动地封装到与它相同类型的包装中.自动拆箱的过程:每当需要一个值时,被装箱对象中的值就被自动地提取出来,没必要再去调用intValue()和doubleValue()方法.自动装箱,只需将该值赋给一个类型包装器引用,java会自动创建一个对象.自动拆箱,只需将该对象值赋给一个基本类型即可.java——类的包装器类型包装器有:Double,Float,Long,Integer,Short,Char

JDK 1.5 新特性

前言:为什么会出现新特性呢?   新的技术的出现就是为了解决老的问题,Java语言随着自身的不断发展,对那些不利于提高开发率的技术进行了改进. 1.静态导入 静态导入可以导入静态方法,这样就不必写类名而可以直接省略类名调用静态方法了. 语法:import static 包名.类名.静态方法; 也可以直接导入某个类中的所以静态方法. 语法:import static 包名.类名.*; Java 5.0 代码示例: 1 package com.tolvgx.day01; 2 import stati

Java 8 新特性:Java 类库的新特性之日期时间API (Date/Time API ) ——诺诺&quot;涂鸦&quot;记忆

----------   诺诺学习技术交流博客.期待与您交流!    ---------- 详情请查看:http://blog.csdn.net/sun_promise  日期时间API (Date/Time API ) 1.Java8之前java.util.Date和Calendar类的弊端 1)最开始的时候,Date既要承载日期信息,又要做日期之间的转换,还要做不同日期格式的显示,职责较繁杂(不遵守单一职责). 后来从JDK 1.1 开始,这三项职责分开了: 使用Calendar类实现日期和

JDK 1.8新特性Lambda入门

网上关于java lambda的例子很多,但是这些五花八门的例子很不常见不常用,最后导致初学者望而却步,其实我们抓住lambda的本质之后,会发现lambda还是很好理解的.毕竟,java8设计lambda的初衷是给开发者提供便利,而不是制造障碍. lambda表达式本质是匿名方法,下面是一些lambda表达式: (int x, int y) -> x + y () -> 42 (String s) -> { System.out.println(s); } 第一个lambda表达式接收

011-jdk1.8版本新特性三-Date API

1.7.Date API Java 8 在包java.time下包含了一组全新的时间日期API.新的日期API和开源的Joda-Time库差不多,但又不完全一样,下面的例子展示了这组新API里最重要的一些部分: 1.Clock 时钟 Clock类提供了访问当前日期和时间的方法,Clock是时区敏感的,可以用来取代 System.currentTimeMillis() 来获取当前的微秒数.某一个特定的时间点也可以使用Instant类来表示,Instant类也可以用来创建老的java.util.Da

JDK 1.5新特性

1.可变参数 public void add(int... nums){ int sum = 0; for(int i=0; i<nums.length; i++){ sum += nums[i]; } System.out.println(sum); } 注意:当有多种参数时,可变参数放在最后 2.foreach public void add(int[] nums){ int sum = 0; for(int num : nums){ sum += num; } System.out.pri