Típicamente en un interfaz gráfica del usuario, habrá campos de texto que esperan que el usuario ingrese un valor numérico. Este valor numérico terminará en un Cuerda objeto que realmente no ayuda a su programa si desea hacer algo de aritmética. Afortunadamente, hay clases de contenedor que proporcionan métodos para convertir esos valores de String en números y la clase String tiene un método para volver a convertirlos.
Clases de envoltura
los tipos de datos primitivos que tratan con números (es decir, byte, int, double, float, long y short) todos tienen equivalentes de clase. Estas clases se conocen como clases envolventes, ya que toman un tipo de datos primitivo y lo rodean con la funcionalidad de una clase. Por ejemplo, la clase Doble tendrá un valor doble como datos y proporcionará métodos para manipular ese valor.
Todas estas clases de contenedor tienen un método llamado valueOf. Este método toma un String como argumento y devuelve una instancia de la clase wrapper. Por ejemplo, supongamos que tenemos una cadena con el valor de diez:
Número de cadena = "10";
Tener este número como una Cadena no nos sirve, así que usamos la clase Integer para convertirlo en un objeto Integer:
Entero convertidoNúmero = Integer.valueOf (número);
Ahora el número se puede usar como un número y no como una Cadena:
convertNumber = convertNumber + 20;
También puede hacer que la conversión vaya directamente a un tipo de datos primitivo:
int convertNumber = Integer.valueOf (número) .intValue ();
Para otros tipos de datos primitivos, simplemente coloca en la clase de contenedor correcta: Byte, Entero, Doble, Flotante, Largo Corto.
Nota: Debe asegurarse de que la Cadena se pueda analizar en el tipo de datos apropiado. Si no puede, terminará con un error de tiempo de ejecución. Por ejemplo, tratando de convertir "diez" en un número entero:
Número de cadena = "diez";
int convertNumber = Integer.valueOf (número) .intValue ();
producirá una NumberFormatException porque el compilador no tiene idea de que "diez" se supone que es 10.
Más sutilmente, se producirá el mismo error si olvida que un 'int' solo puede contener números enteros:
Número de cadena = "10.5";
int convertNumber = Integer.valueOf (número) .intValue ();
El compilador no truncará el número, solo pensará que no cabe en un 'int' y que es hora de lanzar una NumberFormatException.
Convertir números a cadenas
Para convertir un número en una cadena sigue el mismo tipo de patrón que la clase de cadena también tiene un método valueOf. Puede tomar cualquiera de los números de tipo de datos primitivos como argumento y producir una Cadena:
int númeroTwenty = 20;
Cadena convertida = String.valueOf (numberTwenty);
que pone "20" como el valor de cadena de convertida.
o puede usar el método toString de cualquiera de las clases de contenedor:
Cadena convertida = Integer.toString (numberTwenty);
El método toString es común a todos los tipos de objetos, la mayoría de las veces es solo una descripción del objeto. Para las clases de contenedor, esta descripción es el valor real que contienen. En esta dirección, la conversión es un poco más robusta. Si se usara la clase Doble en lugar del Entero:
Cadena convertida = Double.toString (numberTwenty);
el resultado no causaría un Error de tiempo de ejecución. La variable convertida contendría la Cadena "20.0".
También hay una forma más sutil de convertir números cuando estás cadenas de concatenación. Si una Cadena se construyera como:
Cadena aboutDog = "Mi perro tiene" + númeroTwenty + "años".
La conversión del int numberTwenty se realiza automáticamente.