关于Calendar类的实例化问题

来源:互联网 发布:怎么限制软件联网 编辑:程序博客网 时间:2024/06/06 21:00

复习到Calendar类的时候,产生了一些疑问并通过查阅api文档搞清楚了一些问题

Calendar中包含了一些字段,这些字段中很多表示时间的字段都是采用了 final static修饰符修饰,并在声明了时候进行了初始化,作为类的常量存在

之前的疑问:为什么不能直接通过对象名(c)或类名(Calendar)来直接访问这些字段从而获取时间信息?

于是进行了以下实验,发现通过set方法设置了年份,月份和日后,通过类名访问到的都是初始化时候的常量,而通过get()方法才能获取到所需的时间信息,

既然这些表示时间的字段作为常量存在,并且呈现出规律的自然数排列,1,2,3,4...,是否存在什么意义?api文档Calendar类还包括了一个fields[]数组,而这些常量则

正好作为该数组的下标,通过查阅源码,发现get()方法是通过这个数组和下标来返回该时间信息,在获取实例对象的时候,当前时间对这个数组进行了初始化

import java.util.*;
class CalendarDemo{public static void main(String[] args){Calendar c = Calendar.getInstance();//<span style="font-family: Arial, Helvetica, sans-serif;">Calendar类通过getInstance()获取实例对象</span>c.set(2016,7,23,15,40,20);//sop(c);sop(Calendar.YEAR+"年");
<pre name="code" class="java"><span style="white-space:pre"></span>sop(Calendar.MONTH+"月");
<span style="white-space:pre"></span><pre name="code" class="java"><span style="white-space:pre"></span>sop(Calendar.DAY_OF_MONTH+"日");
<span style="white-space:pre"></span><pre name="code" class="java"><span style="white-space:pre"></span>sop(Calendar.HOUR_OF_DAY+"时");
<span style="white-space:pre"></span><pre name="code" class="java"><span style="white-space:pre"></span>sop(Calendar.MINUTE+"分");
<span style="white-space:pre"></span>        sop(Calendar.SECOND+"秒");

sop(c.get(Calendar.YEAR)+"年");
<span style="white-space:pre"></span>sop(c.get(Calendar.MONTH)+"月");<span style="white-space:pre"></span>sop(c.get(Calendar.DAY_OF_MONTH)+"日");<span style="white-space:pre"></span>sop(c.get(Calendar.HOUR_OF_DAY)+"时");<span style="white-space:pre"></span>sop(c.get(Calendar.MINUTE)+"分");<span style="white-space:pre"></span>sop(c.get(Calendar.SECOND)+"秒");
}public static void sop(Object obj){System.out.println(obj);}}

0 0
原创粉丝点击