Date类实例化的顺序

Quincy650 2017-12-20 08:54:58
//java日期时间,主要介绍Data类,在工具包中
import java.util.Date;//引入工具包
public class DateTest{
public static void main(String [] args){
//初始化Date对象,使用当前的时间和日期来初始化对象
Date date1=new Date();
Date date4=new Date();
System.out.println("对象1的日期是:"+date1.toString());
System.out.println("对象4的日期是:"+date4.toString());

System.out.println("对象1在对象4:"+date1.compareTo(date4));
System.out.println("对象4在对象1:"+date4.compareTo(date1));


}
}


date1和date4打印出的时间是是一样的,但date1.compareTo(date4)却返回-1,这该如何解释呢?

求助大佬。
...全文
272 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
踏 浪 2017-12-22
  • 打赏
  • 举报
回复
1、你第一个例子连续new 两个Date的时候,由于计算机运算太快了,在1毫秒内两个date是同时new出来的,所以他们相等。如果想把效果看的明显一点可以用个for循环中间new很多个没有用的date。
public static void test2(){
//获取d1时间的毫秒数
Date date1 = new Date();
long d1 = date1.getTime();
//这里模拟new 很多个Date
for(int i=0;i<99999999;i++){
new Date();
}
//获取d4时间的毫秒数
Date date4 = new Date();
long d4 = date4.getTime();

System.out.println("对象1的日期是:" + date1.toString());
System.out.println("d1=" + d1);
System.out.println("d4=" + d4);
System.out.println("对象1在对象4:" + date1.compareTo(date4));
System.out.println("对象4在对象1:" + date4.compareTo(date1));
}
2、你第二个例子在两个new 中间使用的 System.out.println(). 这个可能会占用1毫秒或几毫秒的时间,所以两个new出来的Date在毫秒级别是不一样的,下面代码可能需要多运行几次才会出来效果。
public static void test(){
long d1 = System.currentTimeMillis();
System.out.println("Hello");
long d2 = System.currentTimeMillis();
System.out.println("d1="+d1);
System.out.println("d2="+d2);
}.
hp961218 2017-12-21
  • 打赏
  • 举报
回复
打印出来的可能只有时分秒,但是后面的毫秒肯定不一样,因为是第一个日期先被创建,第二个后创建,俩次创建是有间隔,所以日期看起来是一样,但是实际上是不一样.
Braska 2017-12-21
  • 打赏
  • 举报
回复
new完date1以后线程阻塞再new date4 就会出现-1的结果。
galiniur0u 2017-12-21
  • 打赏
  • 举报
回复
引用 1 楼 qq_31815487 的回复:
我打印的结果是0
我的也是0,不知道楼主是怎么打印出来的
Quincy650 2017-12-21
  • 打赏
  • 举报
回复
//java日期时间,主要介绍Data类,在工具包中
import java.util.Date;//引入工具包
public class DateTest{
	public static void main(String [] args){
		//初始化Date对象,使用当前的时间和日期来初始化对象
		Date date1=new Date();
		
        System.out.println("对象1的日期是:"+date1.toString());
		//System.out.println("对象4的日期是:"+date4.toString());
		Date date4=new Date();
        System.out.println("对象1在对象4:"+date1.compareTo(date4));
		System.out.println("对象4在对象1:"+date4.compareTo(date1));
		
	
	}
}
在date1和date4之间添加一个打印语句,就会打印出-1和1,这该如何解释呢?
xtzgdx 2017-12-20
  • 打赏
  • 举报
回复
你看一下compareTo方法的代码就可以了,双击选中方法,按F3可以看源码,小于返回-1,等于返回0,大于返回1
脱落叶子 2017-12-20
  • 打赏
  • 举报
回复
我打印的结果是0

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧