黑马程序员技术交流社区
标题:
Calendar类延迟修改的疑惑?
[打印本页]
作者:
谢冬
时间:
2013-3-19 12:46
标题:
Calendar类延迟修改的疑惑?
//把当前年份设置成
Calendar c = Calendar.getInstance();
c.set(2003, 7, 31);
c.set(Calendar.MONTH, 8);
c.set(Calendar.DATE, 5);
System.out.println(c.getTime());//输出2013-9-5,这里体现了延迟修改
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.MONTH, 8);
c1.set(Calendar.DATE, 31);
System.out.println(c.getTime());//为什么这里没有延迟修改?
作者:
罗玉宁
时间:
2013-3-22 02:26
本帖最后由 罗玉宁 于 2013-3-22 02:34 编辑
set(int field, int value) 方法将日历字段field更改为alue,此外它还设置了一个内部成员变量,以指示日历字段field已经被修改,尽管日历字段
field是立即更改的,但该Calendar所代表的时间却不会立即修改。直到调用get()、getTime()、add()、getTimeInMillis()或roll()
时才会重新计算日历的时间,这被称为set方法的延迟修改。
即当程序执行完
c.set(2003, 7, 31);
c.set(Calendar.MONTH, 8);
后不会把时间改为2003年 10月 1日,而是使用内部成员
变量表记录MONTH字段被修改为8,接着程序设置DATE
字段为5,程序内部再记录DATE字段为5 直到调用c.getTime()时间才被真正的修改为9月5日
采用延迟修改的优势是多次调用set()不会触发多次不必要的计算。
作者:
陈丽莉
时间:
2013-3-22 16:01
记得及时处理帖子哦,继续追问,或将分类改成【已解决】~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2