なぜ 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" を追加するこの奇妙なシステムの必要性が完全になくなるのではないでしょうか?