java类详解(深入浅出 Date Math System BigInteger等 )

2022-11-13 10:56:00 浏览数 (1)

首先说下时间,时间是我们生活中非常重要的,再万事万物皆对象的java当然也不会放过它,我们从jdk8之前和jdk8以后来说明下它

JDK8 之前日期时间 API

代码语言:javascript复制
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

代码语言:javascript复制
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

System类

0 人点赞