1. ¿Para qué sirve la conversión de tipos?
Java — es un lenguaje de tipado estricto. Si el ordenador tiene una «cajita» para un número, intentar meter ahí texto es más o menos como intentar meter un tenedor en un puerto USB. ¡El compilador no te perdonará algo así! 😡
Sin embargo, en la práctica a menudo trabajamos a la vez con distintos tipos de datos. Por ejemplo, tienes una cadena que contiene un número. Ahí es donde necesitas la conversión (o transformación) de tipos.
Veamos un ejemplo. Supongamos que quieres almacenar la cantidad de usuarios:
int a = 1;
int b = "2";
int c = "tres";
Aquí el compilador te dirá enseguida: «¿Por quién me tomas? No sé convertir una cadena en un número automáticamente; sin tu ayuda, imposible. Debes convertir la cadena a número de forma explícita».
En Java hay varias formas de conversión, y cada una tiene sus pros, sus contras y sus trampas típicas.
2. Convertir int a String
En nuestro trabajo a menudo necesitamos obtener la representación en cadena de un número: por ejemplo, para mostrarlo en pantalla, guardarlo en un archivo, enviarlo por la red, unirlo con texto, etc. En Java existen varias formas para ello, cada una conveniente en distintas situaciones.
Función String.valueOf()
Es el método principal y más común:
int number = 42;
String str = String.valueOf(number); // str == "42"
String.valueOf() convierte el número en una cadena que corresponde al tipo del objeto que se le pasa.
Concatenación con cadena vacía
Un método antiguo pero funcional:
int number = 42;
String str = "" + number;
Este enfoque funciona bien para casos simples, pero es menos explícito para quien lee el código.
3. Conversión implícita a cadena
Como ya se dijo arriba, los desarrolladores de Java hicieron que absolutamente todas las variables, objetos y expresiones en Java se puedan convertir al tipo String.
Además, esto ocurre automáticamente cuando sumamos un tipo String con algún otro tipo. Ejemplos:
int a = 5;
String name = "Ana" + a; // name contiene la cadena Ana5
int a = 5;
String city = a + "New York" + a; // city contiene la cadena 5New York5
int number = 10;
String code = "Yo";
String message = "Hello! " + number + code; // message contiene la cadena Hello! 10Yo
En los tres ejemplos combinamos sin problema variables de tipo int y String, y el resultado siempre fue del tipo String.
Ejemplos:
int a = 5;
String name = "1" + a; // name contiene la cadena 15
int a = 5;
String city = a + "9" + a; // city contiene la cadena 595
int number = 10;
String code = "10";
String message = "" + number + code; // message contiene la cadena 1010
La operación de suma se evalúa de izquierda a derecha, así que el resultado puede ser algo inesperado. Ejemplo:
int a = 5;
String name = a + a + "1" + a; // name contiene la cadena 1015
Orden de evaluación: ((a + a) + "1") + a
4. Conversión de cadena a número
Para convertir un número en cadena en Java, basta con concatenarlo con una cadena vacía:
String str = "" + chislo;
¿Y qué hacer si necesitamos convertir una cadena en número? Bien, no se puede convertir cualquier cadena en número. Pero si la cadena contiene solo dígitos, entonces sí se puede. Para ello, en Java existe una función especial.
El comando se ve así:
int x = Integer.parseInt(stroka);
Donde int x es la declaración de la variable entera x, y la cadena es un número dado en forma de cadena (una cadena compuesta por dígitos).
Ejemplos:
String str = "123";
int number1 = Integer.parseInt(str); // number1 contiene el número 123;
int number2 = Integer.parseInt("321"); // number2 contiene el número 321
int number3 = Integer.parseInt("321" + 0); // number3 contiene el número 3210
int number4 = "321"; // No compilará: la variable es de tipo int, pero el valor es de tipo String
Para valores negativos esto también funciona: el método Integer.parseInt() es muy inteligente.
GO TO FULL VERSION