日期:2014-05-20  浏览次数:20810 次

小白求解下面的关于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方法中的引用无关。