首先说下时间,时间是我们生活中非常重要的,再万事万物皆对象的java当然也不会放过它,我们从jdk8之前和jdk8以后来说明下它
JDK8 之前日期时间 API
import java.util.Date; public class text1{ public static void main(String[] args) { Date date = new Date(); System.out.println(date); System.out.println(System.currentTimeMillis()); System.out.println(date.getTime()); Date date1 = new Date(date.getTime()); System.out.println(date1.getTime()); System.out.println(date1.toString()); } }
新日期时间 API 出现的背景
如果我们可以跟别人说:“我们在 1502643933071 见面,别晚了!”那么就再简单不
过了。但是我们希望时间与昼夜和四季有关,于是事情就变复杂了。 JDK 1.0 中包含了
一个 java.util.Date 类,但是它的大多数方法已经在 JDK 1.1 引入 Calendar 类之后被弃用了。而 Calendar 并不比 Date 好多少。
它们面临的问题是:
可变性:像日期和时间这样的类应该是不可变的。
偏移性: Date 中的年份是从 1900 开始的,而月份都从 0 开始。
格式化:格式化只对 Date 有用, Calendar 则不行。
此外,它们也不是线程安全的;不能处理闰秒等。
总结:对日期和时间的操作一直是 Java 程序员最痛苦的地方之一。
LocalDate 、 LocalTime 、 LocalDateTime 类是其中较重要的几个类,它们的实例
是 不可变的对象 ,分别表示使用 ISO-8601 日历系统的日期、时间、日期和时间。
它们提供了简单的本地日期或时间,并不包含当前的时间信息,也不包含与时区
相关的信息。
LocalDate 代表 IOS 格式( yyyy-MM-dd )的日期 , 可以存储 生日、纪念日等日期。
LocalTime 表示一个时间,而不是日期。
LocalDateTime 是用来表示日期和时间的, 这是一个最常用的类之一。
注: ISO-8601 日历系统是国际标准化组织制定的现代公民的日期和时间的表示
法,也就是公历
Java比较器
在 Java 中经常会涉及到对象数组的排序问题,那么就涉及到对象之间
的比较问题。
Java 实现对象排序的方式有两种:
自然排序: java.lang.Comparable
定制排序: java.util.Comparator
class Goods implements Comparable { private String name; private double price; //按照价格,比较商品的大小 @Override public int compareTo(Object o) { if(o instanceof Goods) { Goods other = (Goods) o; if (this.price > other.price) { return 1; } else if (this.price < other.price) { return -1; } return 0; } throw new RuntimeException("输入的数据类型不一致"); } @Override public String toString() { return "Goods [name=" + name + ", price=" + price + "]"; } public Goods(String name,double price) { this.name=name; this.price=price; } } public class text1{ public static void main(String[] args) { Goods[] all = new Goods[4]; all[0] = new Goods("《红楼梦》", 100); all[1] = new Goods("《西游记》", 80); all[2] = new Goods("《三国演义》", 140); all[3] = new Goods("《水浒传》", 120); Arrays.sort(all); System.out.println(Arrays.toString(all)); } }
输出结果;
[Goods [name=《西游记》, price=80.0], Goods [name=《红楼梦》, price=100.0], Goods [name=《水浒传》, price=120.0], Goods [name=《三国演义》, price=140.0]]
System类
Math类
BigInteger与BigDecimal