Inicializar una larga en Java

Tipos de datos primitivos: el documento Oracle dice que el rango de long en Java es -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 . Pero cuando hago algo como esto en mi eclipse

 long i = 12345678910; 

me muestra ” The literal 12345678910 of type int is out of range error The literal 12345678910 of type int is out of range “.

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 ?

  1. Debe agregar L : long i = 12345678910L; .
  2. Sí.

Por cierto: no tiene que ser una L mayúscula, pero la minúscula se confunde con 1 muchas veces :).

  1. Debe agregar el carácter L al final del número para que Java lo reconozca como un largo.

     long i = 12345678910L; 
  2. Sí.

Consulte 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”.

Necesita agregar L mayúscula al final como tal

 long i = 12345678910L; 

Lo mismo 3.0f para flotar con 3.0f

Que debería responder a ambas preguntas

Para inicializar largo necesitas 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ón de byte con cualquier número entero, byte primero se promueve a int y luego se realiza cualquier operación.

Prueba esto

 byte a = 1; // declare a byte a = a*2; // you will get error here 

Obtiene el error porque 2 es por defecto int .
Por lo tanto, está tratando de multiplicar byte con int . Por lo tanto, el resultado se escribe en int que no se puede volver a asignar a byte .