第一: 在Java中,用“引用变量.方法(参数列表)”来调用方法,如果在参数列表中传传入的值为引用变量,那么应该怎么理解啊!
   第二:1语句中它传入值为数组(其也可以看作引用变量),那么2.3.4.5.6.7语句中的“year < date.year“ month > date.month ”“month < date.month ” “day > date.day ” “ day < date.day ”应怎么理解啊!
   第三:把8语句“public int compare(Date date)”改为“public int compare(Date day[])”,形参该为数 组型,为什么无法编译不过去,会出现错误,应怎么改?[/align]
public class TestDateSort {
  public static void main(String[] args) {
    Date[] days = new Date[5];
    days[0] = new Date(2006, 5, 4);
    days[1] = new Date(2006, 7, 4);
    days[2] = new Date(2008, 5, 4);
    days[3] = new Date(2004, 5, 9);
    days[4] = new Date(2004, 5, 4);
    System.out.println(days[0].compare(days[1])); .........1语句
  }
   
 }class Date {
  int year, month, day;
   
  Date(int y, int m, int d) {
  this.year = y;  
  this.month = m;  
  this.day = d;
  }   
  public int compare(Date date) { ---------------------------------8 
  if(year > date.year ){ return 1; }-------------------------------2
  else if(year < date.year ){return -1; }--------------------------3
  else if( month > date.month ){return 1; }------------------------4
  else if( month < date.month ){return -1; }-----------------------5
  else if( day > date.day ){return 1 ;}----------------------------6
  else if( day < date.day ){return -1 ;} --------------------------7
  else{return 0;}   
  }
   
  public String toString() {
  return "Year:Month:Day -- " + year + "-" + month + "-" + day;
  }
}
补充一下,红色语句中它传入值为数组(其也可以看作引用变量),那么蓝色语句中的“year < date.year“ month > date.month ”“month < date.month ” “day > date.day ” “ day < date.day ”应怎么理解啊!

解决方案 »

  1.   

    days 是数组,day[0] 只是一个Date 的实例,也是days中的一个元素。
    把8语句“public int compare(Date date)”改为“,因为这句用到public int compare(Date date)这个方法”
    这句,没问题,你想怎么改就怎么改。
    你只要把这句删了
    System.out.println(days[0].compare(days[1])); .........1语句
    ,因为这句用到public int compare(Date date)这个方法,而你改掉了,
    或者你重载一个方法,不要删除上面那个方法。
    public int compare(Date[] dates){
    }
    恭喜你编译通过。
      

  2.   

    days[0] = new Date(2006, 5, 4);
    days[1] = new Date(2006, 7, 4);比如现在调用days[0].compare(days[1])
    2句中的year > date.year意思就是days[0]的year(2006)
    和days[1]的year字段作比较。
    这里的year指的是days[0]的year
    而date.year指的是days[1]的year
      

  3.   

    Date这个类基本上已经不建议使用了  lz可以考虑Calendar用法
      

  4.   

    第一点,java参数传递都是传值的,就是某一个Value通过参数传递后,该参数就成为了传递的这个Value是一个定量,而不再是变量。你可以理解参数就是一个定值。