静态变量不会影响Java Calendar Class中的其他对象

时间:2016-09-04 21:54:08

标签: java date object static calendar

由于Java中的str3类具有静态数据字段,例如mergeString,为什么修改静态字段时其他对象不会改变? 我制作了两个不同的Gregorian Calendars,并认为静态数据字段改变了所有对象的值而不是一个。

Calendar

2 个答案:

答案 0 :(得分:2)

Calendar.DATE不是静态字段,它是一个静态变量,用于引用您想要在特定Calendar实例中设置/获取的值类型。< / p>

如果查看actual source code of java.util.Calendar,您会看到它有一个内部int数组,其中包含所有值,即日,月,年等。

Calendar.DATE只是一种引用该数组第五个元素的好方法。

Java 8源代码中的成员声明。

/**
 * Field number for <code>get</code> and <code>set</code> indicating the
 * day of the month. This is a synonym for <code>DAY_OF_MONTH</code>.
 * The first day of the month has value 1.
 *
 * @see #DAY_OF_MONTH
 */
public final static int DATE = 5;

答案 1 :(得分:0)

罗尔沙赫的回答是正确的,应该被接受。

此外,您正在使用旧的日期时间类,这些类已被证明设计糟糕,令人困惑且麻烦。避免他们。它们已被java.time类取代。

LocalDate today = LocalDate.now( ZoneId.of( "America/Montreal" ) );
LocalDate nextWeek = today.plusWeeks( 1 );
LocalDate midMonth = today.withDayOfMonth( 15 );
LocalDate firstOfMonth = today.with( TemporalAdjusters.firstDayOfMonth() );
LocalDate secondTuesdayOfThisMonth = today.with( TemporalAdjusters.dayOfWeekInMonth( 2 , DayOfWeek.TUESDAY ) );