黑马程序员技术交流社区
标题:
两个语句有什么不同?
[打印本页]
作者:
邓超军
时间:
2012-7-16 11:50
标题:
两个语句有什么不同?
本帖最后由 邓超军 于 2012-7-17 18:13 编辑
class Employee
{
private Date hireDay;
public Date getHireDay()
{
//return hireDay; 为什么这句是错误的?或者说为什么不要这么写?
return (Date)hireDay.clone();//和return hireDay有什么区别?
}
}
复制代码
作者:
陆鹏
时间:
2012-7-16 12:27
你确定这样能执行?
class Employee
{
private Date hireDay;
public Date getHireDay()
{
//
return hireDay; private Date hireDay。这个语句只是声明了hireDay是个Date类型的变量,而没有实例化。
return (Date)hireDay.clone();//和return hireDay有什么区别?
这样对吗?hireDay还没有实例化,你就用了clone方法,而且clone()放回的是Object类型的副本,当然需要强转。
}
}
作者:
党巾水
时间:
2012-7-16 12:29
本帖最后由 刘馨琪 于 2012-7-16 12:31 编辑
return hireDay;
楼主确定这句话有错吗?
我运行时这句话对,反而是return (Date)hireDay.clone();报错了。
报的 java.lang.NullPointerException,空指针异常。
作者:
邓超军
时间:
2012-7-17 09:17
实在抱歉,return hireDay;这个语句没有错,是我提问错了。今天我弄了4个小时,终于明白了,这句语句是没有错,但存在bug,请看以下代码,就会明白。
代码1:
import java.util.*;
public class EmployeeDemo {
public static void main(String[] args) {
Employee ep=new Employee(2011,9,18);
Date dt=ep.getHireDay();
System.out.println(ep.getHireDay());
double te=10*365.25*24*60*60*1000;
dt.setTime(dt.getTime()+(long)te);
System.out.println(ep.getHireDay());
}
}
class Employee
{
private Date hireDay;
public Date getHireDay()
{
return hireDay;
}
Employee(int year,int month,int day)
{
GregorianCalendar gc=new GregorianCalendar(year,month-1,day);
hireDay=gc.getTime();
}
}
复制代码
运行结果:
Sun Sep 18 00:00:00 CST 2011
Fri Sep 17 12:00:00 CST 2021
代码2:
import java.util.*;
public class EmployeeDemo {
public static void main(String[] args) {
Employee ep=new Employee(2011,9,18);
Date dt=ep.getHireDay();
System.out.println(ep.getHireDay());
double te=10*365.25*24*60*60*1000;
dt.setTime(dt.getTime()+(long)te);
System.out.println(ep.getHireDay());
}
}
class Employee
{
private Date hireDay;
public Date getHireDay()
{
return (Date)hireDay.clone();
}
Employee(int year,int month,int day)
{
GregorianCalendar gc=new GregorianCalendar(year,month-1,day);
hireDay=gc.getTime();
}
}
复制代码
运行结果:
Sun Sep 18 00:00:00 CST 2011
Sun Sep 18 00:00:00 CST 2011
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2