Initialize a long in Java
JavaLong IntegerJava Problem Overview
Primitive Data Types - oracle doc says the range of long
in Java is -9,223,372,036,854,775,808
to 9,223,372,036,854,775,807
.
But when I do something like this in my eclipse
long i = 12345678910;
it shows me "The literal 12345678910 of type int is out of range
" error.
There are 2 questions.
-
How do I initialize the
long
with the value12345678910
? -
Are all numeric literals by default of type
int
?
Java Solutions
Solution 1 - Java
- You should add
L
:long i = 12345678910L;
. - Yes.
BTW: it doesn't have to be an upper case L, but lower case is confused with 1
many times :).
Solution 2 - Java
-
You need to add the
L
character to the end of the number to make Java recognize it as a long.long i = 12345678910L;
-
Yes.
See Primitive Data Types which says "An integer literal is of type long if it ends with the letter L or l; otherwise it is of type int."
Solution 3 - Java
You need to add uppercase L
at the end like so
long i = 12345678910L;
Same goes true for float with 3.0f
Which should answer both of your questions
Solution 4 - Java
To initialize long you need to append "L" to the end.
It can be either uppercase or lowercase.
All the numeric values are by default int
. Even when you do any operation of byte
with any integer, byte
is first promoted to int
and then any operations are performed.
Try this
byte a = 1; // declare a byte
a = a*2; // you will get error here
You get error because 2
is by default int
.
Hence you are trying to multiply byte
with int
.
Hence result gets typecasted to int
which can't be assigned back to byte
.