import java.util.Date;public class Test1 {
public static void main(String []args){
Date now = new Date();
Date start = addMinutes(now, 24 * 60 * -1);
Date end = addMinutes(start, 24 * 60 * -1);
System.out.println(now);
System.out.println(start);
System.out.println(end);
} public static Date addMinutes(Date sendDate, int n) { Date tmp = (Date) sendDate.clone();
try {
tmp.setMinutes(sendDate.getMinutes() + n);
} catch (Exception e) {
return null;
}
return tmp; }
}正确答案应该是 now > start > end,但实际的输入结果start == end,然后以debug运行时,在 Date end = addMinutes(start, 24 * 60 * -1)打断点时,又输出正常,请问这是什么原因呢?求大佬解释
public static void main(String []args){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now = new Date();
Date start = addMinutes(now, 24 * 60 * -1);
Date end = addMinutes(start, 24 * 60 * -1);
System.out.println(sdf.format(now) + "," +now.hashCode());
System.out.println(sdf.format(start) + "," +start.hashCode());
System.out.println(sdf.format(end) + "," +end.hashCode());
} public static Date addMinutes(Date sendDate, int n) { Date tmp = (Date) sendDate.clone();
Calendar calendar = Calendar.getInstance();
calendar.setTime(tmp);
calendar.set(Calendar.MINUTE, n);// try {
// tmp.setMinutes(sendDate.getMinutes() + n);
// } catch (Exception e) {
// return null;
// }
return calendar.getTime(); }
}
public class Test1 {
public static void main(String []args){
Date now = new Date();
Date start = addMinutes(now, 24 * 60 * -1);
Date end = addMinutes(start, 24 * 60 * -1);
System.out.println(now);
System.out.println(start);
System.out.println(end);
}
public static Date addMinutes(Date sendDate, int n) {
Date tmp = (Date) sendDate.clone();
try {
tmp.setMinutes(tmp.getMinutes() + n);
} catch (Exception e) {
return null;
}
return tmp;
}
}
public class DateTest {
public static void main(String []args){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now = new Date();
Date start = addMinutes(now, 24 * 60 * -1);
Date end = addMinutes(start, 24 * 60 * -1);
System.out.println(sdf.format(now) + "," +now.hashCode());
System.out.println(sdf.format(start) + "," +start.hashCode());
System.out.println(sdf.format(end) + "," +end.hashCode());
} public static Date addMinutes(Date sendDate, int n) {
System.out.println(sendDate.hashCode());
Date tmp = (Date) sendDate.clone();
// Calendar calendar = Calendar.getInstance();
// calendar.setTime(tmp);
// calendar.set(Calendar.MINUTE, n); try {
tmp.setMinutes(sendDate.getMinutes() + n);
} catch (Exception e) {
return null;
}
// return calendar.getTime();
return tmp;
}
}有哪位大神,这在内存中发生了什么?
Date tmp =sendDate;
try {
tmp.setMinutes(sendDate.getMinutes() + n);
} catch (Exception e) {
return null;
}
return tmp;
}