Calendar rightNow = Calendar.getInstance();
rightNow.set(Calendar.YEAR, 1111);
System.out.println(rightNow.get(Calendar.YEAR));
Calendar rightNow1 = Calendar.getInstance();
System.out.println(rightNow1.get(Calendar.YEAR));打印结果:1111
2011YEAR 是 Calendar 的静态字段,为什么设置过YEAR为1111 再次new一个Calendar 实例时,打印的却是2011希望高手能解答下虽然没什么分
rightNow.set(Calendar.YEAR, 1111);
System.out.println(rightNow.get(Calendar.YEAR));
Calendar rightNow1 = Calendar.getInstance();
System.out.println(rightNow1.get(Calendar.YEAR));打印结果:1111
2011YEAR 是 Calendar 的静态字段,为什么设置过YEAR为1111 再次new一个Calendar 实例时,打印的却是2011希望高手能解答下虽然没什么分
rightNow.set(Calendar.YEAR, 1111);public void set(int field, int value)修改的是这个rightNow对象的值
int value)将给定的日历字段设置为给定值。
参数:
field - 给定的日历字段。
value - 给定日历字段所要设置的值。
那这个方法设置的是什么值?既然不是设置YEAR 的值。那是设置rightNow对象中的那个值?
不太懂
rightNow.set(Calendar.YEAR, 1111);
System.out.println(rightNow.get(Calendar.YEAR));Calendar rightNow1 = Calendar.getInstance();
System.out.println(rightNow1.get(Calendar.YEAR));第一次打印的是rightNow 对象的年,而这个对象你将年和设置为1111了;
第二次打印的是rightNow1 这个对象,你没有设置这个年,默认是当前年;所以你打印的时候,显示的是2011;这两个对象是不同的
既然设置了年,能告诉我是设置了Calendar 的哪一个属性吗?
Calendar类的源代码
public static final int YEAR = 1;public static Calendar getInstance()
{
Calendar localCalendar = createCalendar(TimeZone.getDefaultRef(), Locale.getDefault());
localCalendar.sharedZone = true;
return localCalendar;
}再看看 createCalendar方法源代码 private static Calendar createCalendar(TimeZone paramTimeZone, Locale paramLocale)
{
if (("th".equals(paramLocale.getLanguage())) && ("TH".equals(paramLocale.getCountry())))
return new BuddhistCalendar(paramTimeZone, paramLocale);
if (("JP".equals(paramLocale.getVariant())) && ("JP".equals(paramLocale.getCountry())) && ("ja".equals(paramLocale.getLanguage())))
return new JapaneseImperialCalendar(paramTimeZone, paramLocale);
return new GregorianCalendar(paramTimeZone, paramLocale);
}
有没有发现
每调用一次Calendar.getInstance() 就会产生一个新的对象,
Calendar rightNow = Calendar.getInstance();//rightNow 对象1
rightNow.set(Calendar.YEAR, 1111);
System.out.println(rightNow.get(Calendar.YEAR));Calendar rightNow1 = Calendar.getInstance();//rightNow1 对象2
System.out.println(rightNow1.get(Calendar.YEAR));对象1 和 对象2 是两个不同的对象,你设置的是对象1 的年份,对象2并没有改变,所以输出的结果是对的