Java 类的方法get?

Java 类的方法get?,java,get,calendar,Java,Get,Calendar,我在Java中使用类gregoriacalendar时遇到问题。 为什么方法get更改类型为gregoriacalendar的我的变量 我做这项工作: System.out.println(timestart); second = timestart.get(GregorianCalendar.SECOND); System.out.println(timestart); 输出为: ,HOUR_OF_DAY=15,MINUTE=37,SECOND=16,MILLISECOND=794140,Z

我在Java中使用类
gregoriacalendar
时遇到问题。 为什么方法
get
更改类型为
gregoriacalendar
的我的变量

我做这项工作:

System.out.println(timestart);
second = timestart.get(GregorianCalendar.SECOND);
System.out.println(timestart);
输出为:

,HOUR_OF_DAY=15,MINUTE=37,SECOND=16,MILLISECOND=794140,ZONE_OFFSET=?,DST_OFFSET=?]
,HOUR=3,HOUR_OF_DAY=15,MINUTE=50,SECOND=30,MILLISECOND=0,ZONE_OFFSET=3600000,DST_OFFSET=3600000]
为了简单起见,我展示了输出的有趣部分。
我希望这两个打印结果相同,但不是这样。

查看和的源代码,您可以看到,首先调用名为
complete
的方法,该方法调用
updateTime
computeFields
,该方法根据日历的时间戳计算分钟、秒等字段

无论何时更改值,所有字段都将无效。字段似乎只是在访问时重新计算的,如果您从不使用它们,可能是为了避免不必要的计算。因此,基本上,加载这些字段是懒惰的


另一方面,
toString
方法只打印所有值,而不重新计算任何值。因此,在代码中,第一个输出可能显示不再有效的旧值。如果是这种情况,那么您应该在第一个输出的省略部分看到类似于
arefieldset=false的内容

显示运行此代码的timestart的实例化(使用
timestart
初始化为
new GregoriaCalendar()
)我看到生成了两个相同的字符串。
timestart
变量引用的对象上是否有其他线程在运行?(您是否与其他线程共享该对象?)timestart
GregorianCalendar
确定吗??:)我解决了这个问题。简单地给出了用6位数而不是3位数保存的毫秒的问题。感谢您的光临