LocalDate私有变量月和日短数据类型

时间:2016-12-07 11:34:24

标签: java localdate

在LocalDate类的源代码中,我看到私有实例变量月份和日期是短裤而不是整数

This is the Docs of the LocalDate class.

**源代码的一小部分**

private final int year;
private final short month;
private final short day;

private LocalDate(int year, int month, int dayOfMonth) {
    this.year = year;
    this.month = (short) month;
    this.day = (short) dayOfMonth;
}

public int getDayOfYear() {
    return getMonth().firstDayOfYear(isLeapYear()) + day - 1;
}

public int getMonthValue() {
    return month;
}

public int getDayOfMonth() {
    return day;
}

正如您在变量itselve旁边看到的那样,int数据类型用于月和日。为什么要把它缩短呢? 为什么不呢?

private final short year;
private final byte month;
private final byte day;

1 个答案:

答案 0 :(得分:2)

关于存储的全部内容。当您创建LocalDate的对象时,它会在堆中分配一些空间,分配的堆大小取决于您拥有的实例变量的类型。这里因为月和日被声明为'',所以将为它们分配2个字节,如果它被声明为int,则每个将为4个字节。

参数的类型无关紧要,当你赋值时,它会自动加框为从int缩短。