小白求解下面的关于Date类的题目
题目1:
import java.util.Date;
public class Test {
public static void main(String[] args){
Date date = null;
m1(date);
System.out.println(date);
}
public static void m1(Date date){
date = new Date();
}
}
题目1答案 : null
题目2:
import java.util.Date;
public class Test {
public static void main(String[] args){
Date date = new Date(1234567);
m1(date);
System.out.println(date.getTime());
}
public static void m1(Date date){
date = new Date(7654321);
}
}
题目2答案:1234567
题目3:
import java.util.Date;
public class Test {
public static void main(String[] args){
Date date = new Date(1234567);
m1(date);
System.out.println(date.getTime());
}
public static void m1(Date date){
date.setTime(7654321);
}
}
题目3答案: 7654321
题目4:
import java.util.Date;
public class Test {
public static void main(String[] args){
Date date = new Date(1234567);
m1(date);
System.out.println(date.getTime());
}
public static void m1(Date date){
date = null;
}
}
题目4答案:1234567
题目5(找错题)
public class Test {
public static void main(String[] args){
java.uti.Date[] dates = new java.util.Date[10];
System.out.println(date[0]);
System.out.println(date[0].toString());
}
}
希望大神能够给与解释 谢谢!!!
------解决方案--------------------http://blog.csdn.net/feng_cs/article/details/1917498
关于Java中方法调用时参数的传递------解决方案--------------------对象的引用和实例的关系,Date date 是创建一个date引用,new Date()是创建一个Date对象(实际上是在内存分配了一段内存),当Date date = new Date() 表示把date这个引用指向了创建的那个对象,理解了这个,你就应该明白题目一到题目四的结果了。因为你在前两题的m1方法中都重新创建了新的对象,并且把引用指向了新的对象,而最终打印的是main中的引用指向对象的内容,而main中引用指向的对象一直没改变,所以题目一、题目二结果;题目三中m1没有创建新对象,也没有改变新引用date的指向,只是用了set方法把对象中内容重新赋值了,所以得到题目三结果;题目四其实跟前两题一样,date = null 改的只是m1方法中引用的指向,跟main方法中的引用无关。