Reputation: 728
As claimed here, placing an L
after an integer constant turns it into a Long
object whereas using l
would supposedly turn it into its primitive counterpart long
, but Oracle claims here that "An integer literal is of type long
if it is suffixed with an ASCII letter L
or l
".
So is the former making things up, or is the latter lying to me?
And if Oracle is lying to me, would the memory and / or performance difference of Long
vs long
ever actually matter or even be detectable?
In other words, does the case of a Java IntegerTypeSuffix actually matter?
Upvotes: 0
Views: 92
Reputation: 178303
Placing the suffix l
or L
on the end of a numeric literal indicates a long
literal, and not a Long
object.
Section 3.10.1 of the JLS specifies the data type of a numeric literal with an l
or L
suffix:
An integer literal is of type long if it is suffixed with an ASCII letter L or l (ell); otherwise it is of type int (§4.2.1).
The type can matter when specifying literals of large quantity that are too large to fit in an int
literal.
// 10 billion is illegal; too big to fit in an int,
// even if later assigned to a long
long tooBigInt = 10000000000;
// 10 billion here is a legal long literal
long justRight = 10000000000L;
Upvotes: 0
Reputation: 73568
No it doesn't. L is generally chosen since l can be mistaken for a 1.
It seems that the answer you're linking to has a flaw in it.
Upvotes: 1