首先说下时间,时间是我们生活中非常重要的,再万事万物皆对象的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.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类