Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不影响Java Calendar类中其他对象的静态变量_Java_Date_Object_Static_Calendar - Fatal编程技术网

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

不影响Java Calendar类中其他对象的静态变量,java,date,object,static,calendar,Java,Date,Object,Static,Calendar,既然Java中的Calendar类有静态数据字段,比如DATE,为什么在修改静态字段时其他对象不改变呢? 我制作了两个不同的格里高利日历,并认为静态数据字段改变了所有对象的值,而不是一个 import java.util.Calendar; import java.util.GregorianCalendar; public class TEST { public static void main(String[] args) { GregorianCalendar

既然Java中的
Calendar
类有静态数据字段,比如
DATE
,为什么在修改静态字段时其他对象不改变呢? 我制作了两个不同的格里高利日历,并认为静态数据字段改变了所有对象的值,而不是一个

import java.util.Calendar;
import java.util.GregorianCalendar;

public class TEST {
    public static void main(String[] args) {

        GregorianCalendar cal = new GregorianCalendar();

        System.out.println(cal.get(Calendar.DATE));

        GregorianCalendar cal2 = new GregorianCalendar();

        cal2.set(Calendar.DATE, 12);

        System.out.println(cal2.get(Calendar.DATE));
        System.out.println(cal.get(Calendar.DATE));

     }
}
不是一个静态字段,它是一个静态变量,用于引用要在特定的
日历
实例中设置/获取的值类型

如果您查看,您将看到它有一个内部
int
数组,该数组保存所有值,即日、月、年等

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


Java8源代码中的成员声明

/**
 * 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;
不是一个静态字段,它是一个静态变量,用于引用要在特定的
日历
实例中设置/获取的值类型

如果您查看,您将看到它有一个内部
int
数组,该数组保存所有值,即日、月、年等

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


Java8源代码中的成员声明

/**
 * 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;

罗夏的答案是正确的,应该被接受

此外,您正在使用旧的日期-时间类,这些类被证明设计糟糕、容易混淆且麻烦。避开它们。它们已被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 ) );

罗夏的答案是正确的,应该被接受

此外,您正在使用旧的日期-时间类,这些类被证明设计糟糕、容易混淆且麻烦。避开它们。它们已被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 ) );

日历。日期也是最终日期,不能更改。它只是用来指示
set
应该更改
cal2
的日期。请在编写问题及其标题时更加小心和努力。标题应该狭义地描述手头的核心问题。另外,你想对呼叫
set
传递
45
做什么?我刚刚做了一个账户,已经习惯了整个提问问题,对此表示抱歉。其实没什么,我只是在没有考虑的情况下随意输入了一个数字,我只是想把日历日期设置成其他的日期@BasilBourque@Oswald不需要道歉。只需点击“编辑”链接/按钮并修复标题和标题。这些问题和答案是为子孙后代准备的,所以请一定要把它整理好。堆栈溢出更像是维基百科,而不是临时邮件列表讨论。
calendar.DATE
也是
final
,无法更改。它只是用来指示
set
应该更改
cal2
的日期。请在编写问题及其标题时更加小心和努力。标题应该狭义地描述手头的核心问题。另外,你想对呼叫
set
传递
45
做什么?我刚刚做了一个账户,已经习惯了整个提问问题,对此表示抱歉。其实没什么,我只是在没有考虑的情况下随意输入了一个数字,我只是想把日历日期设置成其他的日期@BasilBourque@Oswald不需要道歉。只需点击“编辑”链接/按钮并修复标题和标题。这些问题和答案是为子孙后代准备的,所以请一定要把它整理好。堆栈溢出更像是Wikipedia,而不是暂时的邮件列表讨论。