Dans le code source de la classe LocalDate j'ai vu que le mois de variables d'instance privée et jour étaient short au lieu de ints.LocalDate variables privées mois et le jour à court type de données
This is the Docs of the LocalDate class.
** Une petite partie du code source **
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;
}
Comme vous pouvez le voir à côté des variables themselve, le type de données int est utilisé pour le mois et le jour. Pourquoi faire un court alors?
Et pourquoi pas ça?
private final short year;
private final byte month;
private final byte day;
C'est aussi ce que je pensais, mais pourquoi n'ont-ils pas épargné plus d'espace en rendant l'année courte, le mois de l'octet, le jour court? –
Cela peut être une considération de conception, c.-à-d., Lors de la programmation pour les équipements de bas niveau, la taille du mot sera de 16 bits (peut également être de 8 bits pour les dispositifs embarqués de très bas niveau). En même temps, pour la plupart des ordinateurs, il s'agit d'un mot de 32 bits. Même si c'est court, je pense que les opérations sont en 32 bits, c'est à dire. les registres auront une taille de 32 bits, le bus aura 32 bits, l'adressage sera pour un mot de 32 bits. Donc, dans le cas des ordinateurs, nous n'allons pas obtenir l'avantage de la mémoire, sauf pour les tableaux courts. –