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