Los datos númericos con int tienen un límite. Solo tiene la capacidad de almacenar hasta 10 dígitos.
Con un rango de -128 a 127. Vale 1 byte
Con un rango de -32,768 a 32,767. Vale 2 bytes
Con un rango de -2,147,483,748 a 2,147,483,647. Vale 4 bytes.
Con un rango de -9,223,372,036,854,775,807 a +9,223,372,036,854,775,807. Vale 8 bytes.
Para que el compilador detecte que nuestra dato sea tipo long, deberás colocar una L al final del dato númerico.
public class DataTypes {
public static void main(String[] args) {
//Así no te va a dejar.
~~int numL = 12345678901;~~
//Esta es la manera correcta
long numL = 12345678906L;
~~~~
}
}
Con un rango de 1.40129846432481707e-45 a 3.40282346638528860e+38. Vale 4 bytes. Se usa cuando sabemos que el cálculo o el dato no va a ser tan preciso.
Con un rango de 4.94065645841246544e-324d a 1.79769313486231570e+308d. Vale 8 bytes. Se usa cuando requerimos mayor precisión en los datos.
Formas de escribirlos en código
public class DataTypes {
public static void main(String[] args) {
double numD = 145.526;
float numF = 145.526F;
}
}