我创建了一个程序来打印日历的时间和日期。
这是我的代码:
public class apples {
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
System.out.println(c.getTime());
System.out.println(Calendar.DATE);
c.set(c.DATE, 1);
System.out.println(c.getTime());
System.out.println(Calendar.DATE);
输出:
Fri Nov 28 19:50:10 CET 2014
5
Sat Nov 01 19:50:10 CET 2014
5
问题:
为什么 DATE 的初始值为 5?
将 DATE 设置为 1 后,它保持为 5,因为它是一个常量,但 c.getTime() 返回的时间与以前不同。如何如果变量本身没有更改,该方法是否知道我将 DATE 字段设置为 1?
Calendar.DATE
是一个静态的最终值,指的是:
用于获取和设置的字段编号,指示月份中的某一天。这是DAY_OF_MONTH的同义词。该月的第一天的值为 1。
JavaDoc
它将始终为 5,因为这是分配给它的值。日历来源
public final static int DATE = 5; // line 432
若要获取要获取的值,请执行 get,然后使用 DATE 索引,即 5。
System.out.println(c.get(Calendar.DATE)); //get the calendar's value of the DATE field.
从技术上讲,由于我们知道 DATE 键是 5,你也可以侥幸逃脱(但不应该,因为编码方式不好!
System.out.println(c.get(5));
我们通常不这样做的原因是静态标识符提供了清晰度。
Calendar#DATE
是一个static
字段,用作
表示
get
的数字和表示月份日期的set
。这是一个 DAY_OF_MONTH的同义词。该月的第一天的值为 1。
尽管您在此处将其作为实例变量访问
c.DATE
它实际上是一个值为 5 的类变量。
为什么 DATE 字段的初始值为 5?
这是一个内部实现细节。
当我将 DATE 设置为 1 时,它的值不会改变,但 getTimes() 方法的输出更改。该方法如何知道我设置了日期 字段为 1 如果其值没有更改(其值仍然是 5)?
同样,DATE
永远不会改变。这是一个常数。您正在使用它来设置Calendar
对象的日期。