Java:为什么静态字段彼此"独立"?

0 java static field

在以下代码中,该set方法更改了Calendar类的字段值.该字段YEAR已声明static int YEAR.那么为什么通过创建两个Calendar类对象,对一个对象的更改将反映到另一个对象?这不会发生.我会问你Java开发人员是如何实现这一点的?

Calendar calendar = new GregorianCalendar();
Calendar cal = new GregorianCalendar(2011,9,13);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.YEAR));
Run Code Online (Sandbox Code Playgroud)

pb2*_*b2q 6

Calendar.YEAR是一个常量,仅用于命名由...使用的字段Calendar.该字段的不是静态的:它可以并且将在不同的实例之间变化Calendar.

Calendar 为日期和时间的不同组件定义了许多这些字段名称,特别是与相应字段的get和set操作一起使用.

这是 javadoc中的部分Calendar.YEAR.

至于实现,setget方法都知道这些不同的字段类型,并根据传入的常量更改实例中的值.可以把它想象成一个大的switch语句,get或者set打开所有的字段值.