Java convertir entero a cadena

Convertir un int primitivo, o su respectiva clase contenedora Integer, en una cadena es una operación simple y común. Lo mismo ocurre al revés, conv...

Introducción

Convertir un int primitivo, o su respectiva clase contenedora Integer, en un String es una operación común y simple. Lo mismo ocurre al revés, convertir una cadena a entero.

Conversión de entero a cadena

Al convertir un int o un entero en una cadena, hay cuatro enfoques. La clase String proporciona un par de métodos: valueOf() y format() para este propósito, aunque la clase Integer ya mencionada también ofrece un método toString() que soluciona este problema. Además, también puede confiar en el método append() de StringBuilder, aunque este no es un escenario de uso común:

  • String.valueOf(int i) - Este enfoque se considera la mejor práctica debido a su simplicidad. Este método también acepta otros tipos: boolean, char, char[], double, float, long, Object
  • Integer.toString(int i) - Este enfoque es más antiguo que valueOf() y simplemente utiliza el método que cada objeto Java tiene para devolver una cadena que representa el int dado. Sin embargo, este enfoque, a diferencia del anterior, puede devolver una NullPointerException.
  • String.format(String format, Object... args) - Devuelve una cadena formateada de acuerdo con el especificador de formato y los siguientes argumentos
  • StringBuilder.append(int i).toString() - Igual que el método valueOf(), este método acepta todos los tipos primitivos con la adición de algunos otros tipos como String, StringBuffer y CharSequence .

Cadena.valueOf()

El método valueOf() es el método estático de la clase String que devuelve la representación String del tipo especificado.

Hay muchos tipos permitidos aquí:

  • Objeto
  • char[]
  • booleano
  • char
  • En t
  • largo
  • flotar
  • doble

Pero nos centraremos en int para este tutorial. La representación devuelta coincide exactamente con la representación devuelta por Integer.toString() al pasar el mismo argumento:

1
2
3
4
5
6
7
8
9
int i = 12345;

String string = String.valueOf(i);
String otherString = Integer.toString(i);

System.out.println(string.equals(otherString));
System.out.println(string == otherString);
System.out.println(string);
System.out.println(otherString);

Ejecutar este fragmento de código producirá:

1
2
3
4
true
false
12345
12345

Esto tiene sentido ya que ambos métodos devuelven una nueva cadena. El método equals() devuelve verdadero, porque su valor es el mismo, mientras que == devuelve falso ya que sus variables de referencia no apuntan al mismo objeto en la memoria.

El uso de valueOf() mantiene su código consistente a través de la conversión de un tipo de datos a otro. En el caso de un número entero, el método valueOf() también puede almacenar en caché los números de uso frecuente, p. de -127 a 128, para acelerar la conversión y reducir la memoria.

Debido a esto, se recomienda utilizar el método valueOf() para la conversión de cadenas y enteros.

Integer.toString()

Este enfoque utiliza uno de los métodos Java más comunes: toString() compartido entre todos los objetos.

El método tiene muchos usos y merece una explicación detallada. Si desea leer más al respecto, ¡ya tenemos un gran articulo cubriendolo!

En este caso, el método devuelve un objeto String que representa el int especificado. El argumento se convierte a una representación decimal con signo y se devuelve como una cadena:

1
2
3
4
5
6
7
8
9
int i = 12345;

String string = Integer.toString(i);
String otherString = new Integer(i).toString();

System.out.println(string.equals(otherString));
System.out.println(string == otherString);
System.out.println(string);
System.out.println(otherString);

Ejecutar este fragmento de código producirá:

1
2
3
4
true
false
12345
12345

Si su variable es de tipo primitivo (int), es mejor usar Integer.toString(int) o String.valueOf(int). Pero si su variable ya es una instancia de Integer (clase contenedora del tipo primitivo int), es mejor simplemente invocar su método toString() como se muestra arriba.

Cadena.formato() {#formato de cadena}

Devuelve una cadena con formato según el especificador de formato y los siguientes argumentos. Si bien el propósito de este método no es exactamente convertir, sino formatear una cadena, también se puede usar para la conversión.

Hay bastantes especificadores para elegir:

  • %a - Salida hexadecimal de un número de punto flotante
  • %b - verdadero si no es nulo, falso si es nulo
  • %c - Carácter Unicode
  • %d - Entero decimal
  • %e - Notación científica de un entero decimal
  • %f - Número de coma flotante decimal
  • %g - Igual que el anterior, pero posiblemente científico, dependiendo del valor
  • %h - Hex String of código hash() return value
  • %n - Separador de línea
  • %o - Entero octal
  • %s - Cadena
  • %t - Conversión de fecha/hora
  • %x - Cadena hexadecimal

Nos centraremos en %d para este tutorial:

1
2
3
4
5
int i = 12345;

String string = String.format("%d", i);

System.out.println(string);

Ejecutar este fragmento de código producirá:

1
12345

El método format() arroja una IllegalFormatConversionException si pasa un tipo incompatible, p. pasando Integer para el especificador %s, que espera un objeto String.

Algunos de los especificadores más comunes son %s para cadenas, %d para enteros decimales y %n.

StringBuilder y StringBuffer

Tanto StringBuffer como StringBuilder son clases que se usan para concatenar múltiples valores en una sola cadena.

StringBuffer es seguro para subprocesos pero más lento, mientras que StringBuilder no es seguro para subprocesos pero es más rápido.

1
2
3
4
5
6
7
8
9
int i = 12345;

String string = new StringBuilder().append(i).toString();
String otherString = new StringBuffer().append(i).toString();

System.out.println(string.equals(otherString));
System.out.println(string == otherString);
System.out.println(string);
System.out.println(otherString);

Ejecutar este fragmento de código producirá:

1
2
3
4
true
false
12345
12345

Conclusión

Hemos cubierto uno de los temas fundamentales de Java y el problema común que enfrentan los desarrolladores: convertir un int o un entero en una cadena usando las herramientas incluidas con el JDK.

Licensed under CC BY-NC-SA 4.0