刚看java不久,问个问题。看代码:class Employee{

public Employee(String n,double s,int year,int month,int day){
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year,month-1,day);
hireday = calendar.getTime();//查看getTime方法源代码后发现它是这么写的:return new         Date(getTimeInMillis(),它返回的是new Date(long time),我知道打印 date直接调用toString方法,但是return也是的  吗?
}
public String getName(){
return name;
}
public double getSalary(){
return salary;
}
public Date getHireday(){//定义一个返回值为Date对象的方法
return hireday;      //返回的Date类对象是个日期?为什么呢?
}
public void raiseSalary(double b){
double raise = salary*b/100;
salary += raise;
}
private String name;
private double salary;
private Date hireday;
}
为什么getHireday()返回的是日期不是毫秒数?return new obj返回的是什么?

解决方案 »

  1.   

    calendar.getTime()的类型就是Date。 所以hireday就是Date型的。
    毫秒数和Date型是可以转换的。其实我看了楼主的注释,觉得楼主挺明白的呀。
      

  2.   

    核心就是毫秒数和Date型是可以转换的,而calendar.getTime()的类型就是Date,楼主代码里的注释不是自己写的吗?能写出那样的注释理解起来应该不会太难吧
      

  3.   

    肯定的呀,你定义的返回就是Date那返回的肯定就是日期类型的呀。要么你定义返回long用Date类型的数据获取他的毫秒数也可以。或者你得到这个返回的日期对象后再获取也是可以的
      

  4.   

    越基本的问题越不知道如何解释
    public Date getHireday()你自己定义的返回值类型就是Date,
    不返回Date型不就编译错误了?
    new Date(long time)只是把一个long的毫秒数转成日期而已,它还是一个Date型数值。
      

  5.   


    很多的都是默认转的。就像int和Integer一样。
      

  6.   

    谢谢大家的回复。我觉得我可能有某个基本概念没弄懂,所以卡在那!我的意思是:
    比如,Date类下面的getTime()返回的是一个long型毫秒值,为什么Calendar下面返回的是格式化的日期而不是一个long型毫秒值?还有,比如,System.out.println(new Date());这会返回当前日期,因为调用的是Date类的toString()方法,那么return new Date()也是调用toString方法?API文档里我可以找到println的源代码,我可以知道它调用了什么方法,但是找不到return的介绍。
      

  7.   


    楼主你绕弯了
    return new Date();是返回 一个Date对象,他跟打印没关系new  Date() 同样是建立 一个Date对象
      

  8.   

    比如说:return obj;
    你说返回的是obj实例,obj是封装的,里面有许多东西,那它到底返回哪个部分?编译器怎么判断的?