I'm confused why Java integer literals default to int
instead of long
. This seems to cause unnecessary confusion.
First, it requires the programmer to adopt a special syntax (append "L" to literals) when assigning a value to a long
that exceeds the maximum int
size (2147483647).
long x = 2147483647; // Compiles
long y = 2147483648; // Does not compile
long z = 2147483648L; // Compiles
Second, when using the Long
wrapper class, the programmer must always use the long
literal notation as explained in this SO question.
Long x = 250; // Does not compile
Long y = 250L; // Compiles
Third, considering that implicit conversion from int
literals to the "narrower" data types (short
and byte
) works just fine in all situations (that I know of), it seems that simply making all integer literals type long
would have been the obvious solution... right? Wouldn't this completely remove the need for this odd system of appending "L" to integer literals in special cases?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With