import java.util.Date;public class TestFinal {
public static void main(String[] args){
Test1 test = new Test1(2009,3,2);
System.out.println(test.getHireday());
test.reset();
System.out.println(test.getHireday());
}
}
class Test1{
private Date hireday;
public Test1(int year,int month,int day){
this.hireday = new Date(year,month,day);
} public Date getHireday() {
return hireday;
} public void reset(){
this.hireday.setDate(4);
}
}大家觉得应该输出什么?
本来这个例子是我写来测试final最好不要用来修饰可变类的,如果Test1类中第一行写成private final Date hireday = new Date(); 则后面就不可以再对hireday进行初始化,系统会报错删除hireday终态,现在我把final删掉了,但是结果又不是我觉得应该是的结果,很奇怪,大家帮我看看吧。
public static void main(String[] args){
Test1 test = new Test1(2009,3,2);
System.out.println(test.getHireday());
test.reset();
System.out.println(test.getHireday());
}
}
class Test1{
private Date hireday;
public Test1(int year,int month,int day){
this.hireday = new Date(year,month,day);
} public Date getHireday() {
return hireday;
} public void reset(){
this.hireday.setDate(4);
}
}大家觉得应该输出什么?
本来这个例子是我写来测试final最好不要用来修饰可变类的,如果Test1类中第一行写成private final Date hireday = new Date(); 则后面就不可以再对hireday进行初始化,系统会报错删除hireday终态,现在我把final删掉了,但是结果又不是我觉得应该是的结果,很奇怪,大家帮我看看吧。
输出肯定是2号 4号
找个问题怎么会奇怪呢 你的date对象在reset后重设了日期为4输出2009年三月4号的日期字符串不奇怪吧
我输出的是4月份的,因为在输出月份的时候都要减一,才能得到你原来的月份,在java里面,0代表1月份(就是开始月份),三月当你输入3的时候,就变成了4月了,呵呵
Sun Apr 04 00:00:00 CST 3909
我的结果是这样的,后面显示的年怎么是3909呢?
1、将代码作良好的格式化,以方便阅读。
2、在发帖文本框的上方单击“#”按钮,选择 Java
3、将代码粘贴到【code=Java】和【/code】之间。就会得到下面的效果:public class Hello { public static void main(String[] args) {
System.out.println("Hello!");
}
}