2016-12-07 3 views
2

私は、プライベートインスタンス変数の月と日がパンツ代わりのint型だったことがわかりました。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; 
} 

あなたはthemselveは、intデータ型は、月と日のために使用されている変数の横に見ることができるように。なぜそれを短くするのですか?
これはなぜですか?すべてストレージについて

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

答えて

2

その。 LocalDateのオブジェクトを作成すると、ヒープにスペースが割り当てられます。割り当てられるヒープのサイズは、インスタンス変数のタイプに基づいています。ここでは、月と日が 'short short'と宣言されているので、2バイトが割り当てられ、intとして宣言された場合はそれぞれ4バイトになります。

パラメータのタイプに関係なく、値を割り当てると自動的にintから短くなるように囲まれます。

+0

これも私が思ったものですが、短年、バイト月、短日にすることでスペースを節約できないのはなぜですか? –

+0

低レベルの機器向けにプログラミングする場合、ワードサイズは16ビットになります(非常に低いレベルのエンベデッドデバイスでも8ビットになります)。ほとんどのコンピュータで同時に32ビットワードサイズです。たとえ短くても、私は操作が32ビットであると考えています。レジスタは32ビット・サイズ、バスは32ビット、アドレス指定は32ビット・ワードになります。 コンピュータの場合、短い配列を除いてメモリの利点は得られません。 –

関連する問題