我很困惑为什么Java整数文字默认int代替long.这似乎造成了不必要的混淆.
首先,它要求程序员在为long超过最大int大小的值(2147483647)分配值时采用特殊语法(将"L"附加到文字).
long x = 2147483647; // Compiles
long y = 2147483648; // Does not compile
long z = 2147483648L; // Compiles
Run Code Online (Sandbox Code Playgroud)
其次,当使用Long包装类时,程序员必须始终使用long文字符号,如本SO问题中所述.
Long x = 250; // Does not compile
Long y = 250L; // Compiles
Run Code Online (Sandbox Code Playgroud)
第三,考虑到从int文字到"较窄"数据类型(short和byte)的隐式转换在所有情况下(我知道)都可以正常工作,似乎简单地制作所有整数文字类型long将是明显的解决方案...... ?在特殊情况下,这不会完全消除对整数文字附加"L"的奇怪系统的需要吗?