Primitiva Tipos de datos - Oracle doc dice que la gama de long
en Java es -9,223,372,036,854,775,808
a 9,223,372,036,854,775,807
. Pero cuando hago algo así en mi eclipse
long i = 12345678910;
me muestra " The literal 12345678910 of type int is out of range
" un error.
Hay 2 preguntas
1) ¿Cómo inicializo el long
con el valor 12345678910
?
2) ¿Son todos los literales numéricos por defecto de tipo int
?
java
long-integer
aamadmi
fuente
fuente
Long
: debido al auto-boxeo, puede usarLong i = 12345678910L
, o usarLong i = Long.valueOf(12345678910L)
para aquellos casos en los que no puede usar el auto-boxeo.Respuestas:
L
:long i = 12345678910L;
.Por cierto: no tiene que ser una L mayúscula, pero la minúscula se confunde con
1
muchas veces :).fuente
0x200000000L
0x20000000L
?0x20000000L
funcionaría pero aún puede representarse conint
(un entero de 32 bits), por lo0x20000000
que funcionaría igual de bien.0x200000000L
rompe ese límite, haciendoL
necesario el arrastre .Debe agregar el
L
carácter al final del número para que Java lo reconozca como largo.Si.
Ver tipos de datos primitivos que dice "Un literal entero es de tipo largo si termina con la letra L o l; de lo contrario, es de tipo int".
fuente
Necesitas agregar mayúsculas
L
al final asíLo mismo ocurre para flotar con
3.0f
Que debería responder a ambas preguntas
fuente
Para inicializar mucho, debe agregar "L" al final.
Puede ser mayúscula o minúscula.
Todos los valores numéricos son por defecto
int
. Incluso cuando realiza cualquier operaciónbyte
con cualquier número entero,byte
primero se promueveint
y luego se realiza cualquier operación.Prueba esto
Obtiene un error porque
2
es por defectoint
.Por lo tanto, estás tratando de multiplicar
byte
conint
. Por lo tanto, el resultado se teclea a loint
que no se puede asignar de nuevobyte
.fuente