java中的日期和整数类型的方法参数

时间:2015-10-25 16:42:43

标签: java date methods

您好我是Java的新手,请任何人解释以下代码。我用Date类型替换了int,但是d1值没有改变。但是为什么日期只会改变,以及setYear(100)如何打印为2000.

year   A   B   C   D
1990   0   0   1   0
1991   0   1   1   0
1992   0   0   0   1
1993   1   1   0   0

d1是1999年12月31日星期五00:00:00 GMT d2是太阳12月31日00:00:00 GMT 2000

3 个答案:

答案 0 :(得分:0)

Java是按值引用的。这意味着d1方法中的d2changeDate Date对象与main方法中使用的对象不同,因为它们是特定于方法的(它们已创建)在方法中,而不是在它之外)。

要解决此问题,您可以将d1d2声明为类范围的变量,并使用它们代替方法中的日期对象。

More information

答案 1 :(得分:0)

d1.setYear(100);

通过引用直接引用对象。即使在参数中传递了引用的副本,它仍然可以访问该对象。

方法setYear()会将Date对象的年份更改为 1900 +参数

这就是d1.setYear(100) 2000(1900 + 100)

的原因

为什么d2仍然指的是同一个对象?

因为在你的changeDate方法中,只更改了引用的副本,而不是原来的副本。

More info

答案 2 :(得分:-2)

您已声明对象 d1

两次
 Date d1 = new Date(99,11,31);
 Date d1 = new Date(99,11,31);

也许第二个Date对象应该是d2。