刚看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返回的是什么?
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返回的是什么?
毫秒数和Date型是可以转换的。其实我看了楼主的注释,觉得楼主挺明白的呀。
public Date getHireday()你自己定义的返回值类型就是Date,
不返回Date型不就编译错误了?
new Date(long time)只是把一个long的毫秒数转成日期而已,它还是一个Date型数值。
很多的都是默认转的。就像int和Integer一样。
比如,Date类下面的getTime()返回的是一个long型毫秒值,为什么Calendar下面返回的是格式化的日期而不是一个long型毫秒值?还有,比如,System.out.println(new Date());这会返回当前日期,因为调用的是Date类的toString()方法,那么return new Date()也是调用toString方法?API文档里我可以找到println的源代码,我可以知道它调用了什么方法,但是找不到return的介绍。
楼主你绕弯了
return new Date();是返回 一个Date对象,他跟打印没关系new Date() 同样是建立 一个Date对象
你说返回的是obj实例,obj是封装的,里面有许多东西,那它到底返回哪个部分?编译器怎么判断的?