黑马程序员技术交流社区

标题: 关于Calendar的字段 [打印本页]

作者: 一个人旅行    时间: 2013-12-24 23:35
标题: 关于Calendar的字段
类 Calendar下的字段摘要里的内容都是什么怎么用的?
比如DATE,查定义是public final static int DATE = 5;
DATE它是常量么?那么像下面一样带入有什么意义?
c.set(2013, 2, 1);
c.add(Calendar.DATE, -1);
System.out.println(c.get(Calendar.DATE));//28

既然DATE=5,那么可以看成c.add(Calendar.5, -1),这有什么用呢?
下面的输出语句有该怎么去理解,完全思想一片混乱啊,什么是字段啊。。。那里除了DATE,还有好多啊,新手求指教。。。


作者: (0.0)’    时间: 2013-12-24 23:58
public final static int DATE = 5;
字段就是为了不让后面改变的值,如果你在那个位置一个数字可是不是任何人都可以改变?
但是你放一个变量,人家向要改变,就需要改变这个变量的值,而这个变量你又设定了final类型
被final所修饰的值是常量,不可以被改变,这样就确保不可以被后面的人改变了。
作者: Zenith    时间: 2013-12-25 11:18
public final static int DATE = 5;这是SQL包下的,Calendar是util 包的  你找错了
作者: zzmxhm    时间: 2013-12-25 22:35
Calendar 中的静态常量一般起到标识的作用,有两个最典型的方法,这是它们的声明:
  1. void set(int field, int value);
  2. int get(int field);
复制代码

其中的 field 值就需要使用作为标识的静态常量,比如 get(Calendar.YEAR) 得到的是当前 Calendar 对象表示的年份, set(Calendar.MONTH, Calendar.DECEMBER) 就是将当前 Calendar 对象的月份设置为12月。相比直接使用整数值,这种方式显然增加了程序的可读性,而且这种标识更加容易使用。至于每个标识对应的具体整数值,是类库实现者所关心的,使用时不需要知道它们的值(这些值并没有实际的意义,只是实现程序逻辑的需要)。

但需要注意同样作为静态常量的 Calendar.DECEMBER, Calendar.FRIDAY 等,它们的值和实际的意义是有对应关系的,但这种关系和我们日常所习惯的关系可能会有出入,比如月份的值是从0开始的,工作日(DAY_OF_WEEK) 的值是以周日为第一天(即 Calendar.SUNDAY 对应的值为1)开始计算的。因此在使用过程中最好尽量使用静态常量,而不是直接使用整数值。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2