なぜ Java 整数リテラルのデフォルトがint
ではなく なのか混乱していますlong
。これは不必要な混乱を招くようです。
まず、プログラマは、最大サイズ (2147483647)long
を超える値を a に割り当てるときに、特別な構文 (リテラルに "L" を追加する) を採用する必要があります。int
long x = 2147483647; // Compiles
long y = 2147483648; // Does not compile
long z = 2147483648L; // Compiles
次に、ラッパー クラスを使用する場合、プログラマーはこの SO questionLong
で説明されているように、常にlong
リテラル表記を使用する必要があります。
Long x = 250; // Does not compile
Long y = 250L; // Compiles
int
第三に、リテラルから「より狭い」データ型への暗黙的な変換(short
およびbyte
) が (私が知っている) すべての状況でうまく機能することを考えると、単純にすべての整数リテラルを型long
にすることが明らかな解決策だったようです...そうです? これにより、特殊な場合に整数リテラルに "L" を追加するこの奇妙なシステムの必要性が完全になくなるのではないでしょうか?