Conversión de tipos de dato en Java
Cuando hacemos operaciones con variables, es necesario tener en cuenta el tipo de dato que vamos a manipular, ya que el resultado puede variar dependiendo de esta.
Por ejemplo, si usamos el operador suma entre dos valores numericos, el resultado es otro valor numerico; mientras que si usamos el mismo operador con String, obtendremos una concatenación.
System.out.println(100 + 10); // Resultado es 110
System.out.println("100" + "10"); // Resultado es 10010
Conversión de String a otro tipo de dato y viceversa
Existen tipos de datos primitivos y de objeto, al usar el segundo tipo de dato tenemos ciertas ventajas por los métodos que estos implementan. Así mismo, para cada tipo de dato primitivo existe un equivalente de tipo objeto.
int integerPrimitivo = 10;
Integer integerObjeto = 10;
double doublePrimitivo = 10.0d;
Double doubleObjeto = 10.0d;
boolean booleanPrimitivo = false;
Boolean booleanObjeto = false;
Estos objetos tienen un método en común para la conversión de tipo de dato, el método parse.
Si queremos convertir un String a cualquier tipo de dato numérico, podemos hacer uso del método de la clase del tipo de dato al que queremos convertir :
String number = "100";
byte numberByte = Byte.parseByte(number);
short numberShort = Short.parseShort(number);
int numberInt = Integer.parseInt(number);
long numberLong = Long.parseLong(number);
float numberFloat = Float.parseFloat(number);
double numberDouble = Double.parseDouble(number);
Si queremos transformar un tipo de dato primitivo en un String, sólo debemos concatenar con un String :
String cadena ;
byte numberByte = 10;
short numberShort = 11;
int numberInt = 12;
long numberLong = 13l;
float numberFloat = 14f;
double numberDouble = 15d;
char caracter = 'A';
boolean estado = true;
cadena = "@" + numberByte // La variable cadena almacenará "@10"
cadena = "@" + numberShort // La variable cadena almacenará "@11"
cadena = "@" + numberInt // La variable cadena almacenará "@12"
cadena = "@" + numberLong // La variable cadena almacenará "@13"
cadena = "@" + numberFloat // La variable cadena almacenará "@14"
cadena = "@" + numberDouble // La variable cadena almacenará "@15"
cadena = "@" + caracter // La variable cadena almacenará "@A"
cadena = "@" + estado // La variable cadena almacenará "@true"
Conversión entre tipos de datos primitivos
Un detalle a tener en cuenta es que si tratamos de almacenar un valor entero como byte, short, int o long en un real como double o float vamos a observar que no ocurre ningún problema, de hecho es posible.
int numberInt = 12;
double numberDouble = numberInt; // numberDouble almacenará 12.0
Si colocamos una escala de tipos de dato primitivo numéricos de mayor a menor, tendremos lo siguiente : 1. Double 2. Float 3. Long 4. Int 5. Short 6. Byte
Donde el mayor puede almacenar los valores de sus menores; es decir, double puede almacenar los valores de tipos de dato float, long, int, short, byte; mientras que en el tipo de dato int sólo se puede almacenar tipos de dato short y byte.
byte b = 10;
short s = 20;
int i;
i = b;
i = s;
Si tratamos de asignar un tipo de dato de orden mayor, tendremos un error :
float f = 10f;
int i = f; // Aquí ocurre el error, ya que según el orden anteriormente mencionado, float es mayor que int
Para corregir este error, podemos convertir ese valor flotante en entero, colocando entre parentesis el nuevo tipo al que queremos convertir :
float f = 10f;
int i = (int) f;
Esto también suele ser usado para tipos de dato objeto que comparten similitudes en métodos y atributos.
¡Happy coding! 🤓