由于Java中的str3
类具有静态数据字段,例如mergeString
,为什么修改静态字段时其他对象不会改变?
我制作了两个不同的Gregorian Calendars,并认为静态数据字段改变了所有对象的值而不是一个。
Calendar
答案 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 ) );