Conversión de número de Android a cadena. Conversión de tipos en Java

A menudo existe la necesidad de convertir cadenas a valores de otros tipos, como int o boolean, y viceversa. Según la convención aceptada, la responsabilidad de convertir la cadena V el valor de otro tipo se asigna al método correspondiente de ese tipo. Entonces, por ejemplo, convertir una cadena a un valor int no método estático de la clase contenedora Integer. La siguiente tabla enumera todos los tipos que pueden convertir valores en cadenas y viceversa, y enumera los métodos correspondientes.

TIPO Método de conversión - Método de conversión de cadena

ción a la línea

booleano String.valueOf(boolean) new.Boolean(String). valor booleano()

byte Cadena.valorDe(byte) Byte.parseByte(cadena, int)

corto String.valueOf(corto) Short.parseShort(cadena, int)

int Cadena.valorDe(int) Entero.parseInteger(cadena, int)

largo String.valueOf(largo) Long.parseLong(Cadena, int)

flotante String.valueOf(float) Float.parseFloat(String)

doble Cadena.valorDe(doble) Doble.parseDouble(Cadena)

Para convertir una cadena en un valor booleano, debe crear un objeto booleano y luego consultar su valor. Todas las demás clases contenedoras contienen los métodos correspondientes. analizar gramaticalmente. Métodos analizar gramaticalmente Los tipos de números enteros existen en dos formas sobrecargadas: la primera, además de la cadena, requiere especificar un argumento adicional de tipo int, que representa la base del sistema numérico, de 2 a 32; el segundo toma solo un parámetro de cadena y por defecto asume el uso sistema decimal Estimación En todos los casos excepto booleano, se hace la siguiente suposición: si la cadena representa un valor que no se puede convertir correctamente a un número del tipo apropiado, se genera una excepción NumberFormatException. La clase booleana sigue la convención de que cualquier parámetro de cadena que no sea igual a "verdadero" (no distingue entre mayúsculas y minúsculas) da como resultado la creación de un objeto booleano con el valor falso.

Métodos que le permiten convertir caracteres representados en una de las formas admitidas por el idioma (como \b, \uxxxx etc.), los valores de tipo char y viceversa no existen. Llegar Objeto de cadena que contiene un solo carácter, simplemente llame al método String.valueOf, pasándole el valor de carácter correspondiente como parámetro.

Tampoco hay formas de crear representaciones de cadenas de números especificados en uno de los formatos admitidos por el lenguaje, con un cero a la izquierda (O) que indica número octal, y el prefijo Ох (o ОХ), que sirve como signo sistema hexadecimal Estimación Por el contrario, las clases contenedoras de enteros admiten versiones del método de decodificación que pueden convertir cadenas en valores numéricos del tipo apropiado y comprender que la O inicial es un número octal y uno de los prefijos Ox O Ox es un número hexadecimal.

Cualquier clase de aplicación puede brindar soporte para convertir sus propios objetos en cadenas y viceversa si su declaración anula el método toString en consecuencia y proporciona un constructor especial que crea un objeto de clase basado en la cadena pasada como parámetro. También tiene el método String.valueOf(Object obj), que devuelve un objeto de cadena "nulo" (si obj es nulo) o el resultado del método obj.toString. La clase String contiene suficientes sobrecargas del método valueOf que puede convertir cualquier valor de cualquier tipo en un objeto String mediante llamada sencilla valueOf pasando el argumento requerido.

Este artículo:

  • escrito por el equipo. Esperamos que te sea de utilidad. ¡Feliz lectura!
  • este es uno de los artículos de nuestro

La conversión de tipos es un tema que puede parecer desalentador para quienes son nuevos en la programación Java. Sin embargo, te aseguramos que en realidad todo es sencillo. Lo principal es entender. qué leyes gobiernan la interacción entre variables y recuérdelo al escribir programas. Entonces, averigüémoslo.

Hay 2 tipos de transformaciones en Java; la imagen te ayudará:

Recordemos que todo el “Universo Java” consta de:

  • tipos primitivos (byte, short, int, long, char, float, double, boolean)
  • objetos

En este artículo nosotros:

  • considere la conversión de tipos para tipos de variables primitivas
  • La conversión de objetos (cadena, escáner, etc.) no se considera en este artículo, ya que a los objetos les ocurre una "magia" separada; este es un tema para un artículo separado.
Conversión automática

Bueno, intentemos descubrir qué es la "conversión automática".

Recuerde, cuando analizamos los tipos de variables (en el artículo), dijimos que una variable es una especie de "contenedor" , que puede almacenar el valor de uso posterior en el programa. También hablamos del hecho de que cada tipo de variable tiene su propio rango. valores aceptables y la cantidad de memoria ocupada. Aquí está el cartel donde estaba todo escrito:

Así que esto es a lo que realmente nos estamos refiriendo. Además, no es solo que te hayan dado rangos de valores aceptables y la cantidad de memoria ocupada :)

Comparemos, por ejemplo:

1. byte y corto. byte tiene un rango más pequeño de valores válidos que short. Es decir, byte es como un cuadro más pequeño y short es un cuadro más grande. Y eso significa Podemos poner el byte en corto.

2. byte y entero. byte tiene un rango más pequeño de valores válidos que int. Es decir, byte es como un cuadro más pequeño e int es como un cuadro más grande. Y eso significa podemos poner byte en int.

3. int y largo. int tiene un rango de valores válidos más pequeño que long. Es decir, int es como un cuadro más pequeño y long es como un cuadro más grande. Y eso significa podemos poner int en long.

Este es un ejemplo de conversión automática. Esto se puede representar esquemáticamente en forma de una imagen como esta:

Veamos cómo funciona esto en la práctica.

Ejemplo No. 1

Código No. 1: si ejecuta este código en su computadora,

Prueba de clase (pública estática vacío principal(Argumentos de cadena) (byte a = 15; byte b = a; System.out.println(b); ) )

prueba de clase (

byte a = 15;

byte b = a ;

Código No. 2: si ejecuta este código en su computadora, El número 15 se mostrará en la consola.

prueba de clase (public static void main(String args) ( byte a = 15; int b = a; System.out.println(b); ) )

prueba de clase (

principal público estático vacío (argumentos de cadena) (

byte a = 15;

int b = a ;

Sistema. afuera . imprimirln(b);

¿Eeyore? ¿Crees que veces el mismo número fue enviado a la consola, y el código No. 1 se diferencia del código No. 2 solo en el tipo de variable b ¿Entonces no hay diferencia entre ellos? mi eso no es cierto.

El código No. 2 contiene automáticoconversión de tipo , pero en el código No. 1 - no:

Aunque el número es, en principio, el mismo, ahora está en b oh contenedor más grande, que ocupa mas espacio en el disco. En este caso, la JVM realiza conversiones automáticas para ti. ella sabe que entero más que byte .

Tipo de fundición

Es diferente si intentas transferir algo de un contenedor más grande a uno más pequeño.

Es posible que sepa que el contenedor más grande contiene algo que cabe en el pequeño, pero la JVM no lo sabe e intenta protegerlo de errores.

Por lo tanto, debe “decir claramente” que la situación está bajo control:

prueba de clase (public static void main(String args) (int a=0; long b=15; a = (int) b;))

prueba de clase (

principal público estático vacío (argumentos de cadena) (

int a = 0 ;

largo b = 15 ;

a = (int) b;

Aquí hemos agregado (int) antes b. Si la variable a era, por ejemplo, como byte, entre paréntesis estaría (byte) . Fórmula general se ve así:

Ella dice "haz de (más) significado b una variable del tipo que necesito (objetivo) entero ".

Si algo salió mal.

Antes de esto, abordábamos las situaciones asumiendo que sabíamos exactamente lo que estábamos haciendo. ¿Pero qué pasa si intentas poner algo en un recipiente que no cabe allí?

Resulta que en el contenedor sólo quedará lo que “cabe” allí. Por ejemplo, los números de coma flotante se "cortarán" parte fraccionaria:

// ejemplo 1 clase Prueba ( public static void main(String args) ( double a=11.2345; int b=(int)a; System.out.println(b); // la consola mostrará el número 11 ) )

//ejemplo 1

prueba de clase (

principal público estático vacío (argumentos de cadena) (

doble a = 11,2345 ;

intb = (int)a;

Sistema. afuera . imprimirln(b); // la consola mostrará el número 11

Debemos recordar que la parte fraccionaria no redondeado, A descartado.

¿Qué pasa si intentamos colocar un número que está fuera del rango permitido? Por ejemplo, ¿si pone el número 128 en bytes (rango de bytes de -128 a 127)? ¿Crees que obtendremos 1? No. Obtenemos -128:

prueba de clase (public static void main(String args) ( double a=128; byte b=(byte)a; System.out.println(b); //veremos -128 en la consola) )

El valor de una variable con tal transformación se puede calcular, pero el objetivo del programador es evitar una situación en la que el valor vaya más allá de los límites permitidos, ya que esto puede conducir a Funcionamiento defectuoso programas.

Misiones:
  1. Escriba consistentemente en el compilador las conversiones de todos los tipos primitivos entre sí, incluidos los caracteres y los tipos. Haga una tabla como esta:
byte corto carbonizarse entero largo flotar doble booleano
byte
corto
carbonizarse
entero
Largo
Flotar
doble
booleano

En la intersección escriba: a - si la conversión se produce automáticamente, on - si necesita utilizar una conversión explícita, x - si la conversión es imposible.

* se llama convertir un tipo a sí mismo idéntico– no es necesario registrarlo

  1. Mira nuevamente que talla es cada una. tipo primitivo. Intente hacer un diagrama de flujo que muestre qué tipos van y dónde. Dibuje flechas etiquetadas como “transformación en expansión” y “transformación constrictiva”.
Preguntas

Durante una entrevista para el puesto de Desarrollador Java Junior, es posible que se le pregunte:

¿Qué sabe acerca de la conversión de tipos de datos primitivos? ¿Hay pérdida de datos? ¿Es posible convertir un tipo booleano?

Intenta responder la pregunta.

Resumamos:
  • Si "pone" el contenido de un contenedor más pequeño en un contenedor más grande, la conversión se produce automáticamente y no deberían producirse errores.
  • Si es necesario poner "un valor de un contenedor más grande en uno más pequeño", debe tener cuidado y utilizar la conversión de tipos explícita.
  • Al convertir tipos flotantes o dobles a enteros, la parte fraccionaria no se redondea, sino que simplemente se descarta.
  • El tipo booleano no se puede convertir a ningún tipo.
  • El tipo char se convierte en tipos numéricos, como código de carácter en el sistema UNICODE.
  • Si el número es mayor que su contenedor, el resultado será impredecible.

Este artículo describe sólo una parte del material sobre el tema de la fundición tipográfica. También hay conversiones de tipos de objetos, conversiones a una cadena (después de todo, cualquier cosa se puede escribir en una cadena, ¿verdad?) y promoción automática de tipos en expresiones.

Esperamos que nuestro artículo te haya resultado útil. También existe la oportunidad de inscribirse en nuestros cursos de Java en Kiev. Enseñamos desde cero. Información detallada Puedes encontrarlo en nuestro sitio web.


Pregunta frecuente sobre tipos String/int en Java: Cómo convertir tipo cadena escribir Int?

Solución: usar el método de clase parseInt Entero de Java. El método parseInt convierte el tipo String a Int y genera una excepción NumberFormatException si la cadena no se puede convertir a un valor entero.

Veamos dos breves ejemplos.

1. Ejemplo sencillo de conversión de “cadena a entero” en Java

Ignorando la excepción que podría ocurrir, todo lo que se necesita hacer para convertir un String en un int cabe en una línea de código:

int i = Integer.parseInt(miCadena);

Si la cadena representada por myString es un número entero válido, como "1", "200", etc., se convertirá al tipo int. Si la conversión falla, se generará una excepción NumberFormatException. Por lo tanto, su código debe ser un poco más largo para tener esto en cuenta, como se muestra en el siguiente ejemplo.

2. Ejemplo completo de conversión de String a int

A continuación se muestra código completo programa de ejemplo. Demuestra el proceso de convertir una cadena a un número entero en Java y manejar una posible excepción NumberFormatException:

public class JavaStringToIntExample( public static void main (String args) ( // String s = "fred"; // Utilice esta línea para la prueba de excepción String s = "100"; try ( // la conversión de String a int se realiza aquí int i = Integer.parseInt(s.trim());// imprime el valor después de la conversión System.out.println("int i = " + i); ) captura (NumberFormatException nfe) ( System.out.println("NumberFormatException: " + nfe.getMessage()); ) ))

Explicación

En el ejemplo anterior, el método Integer.parseInt(s.trim()) se utiliza para analizar la cadena s al entero i en siguiente línea código:

int i = Integer.parseInt(s.trim());

Si el intento de conversión falla ( por ejemplo, si está intentando convertir la cadena fred a un tipo entero), entonces el método parseInt de la clase Integer generará una excepción NumberFormatException, que debe manejarse en un bloque try/catch.

En este ejemplo, en realidad no es necesario utilizar el método trim() de la clase String. pero en programas reales será necesario, así que lo apliqué aquí.

Notas adicionales

Ya que estamos en el tema, aquí hay algunas notas sobre Clases de cuerdas y Entero:

  • El método Integer.toString(int i) se utiliza para convertir de tipo int a clase Cadena de Java.
  • Para convertir un objeto String en un objeto Integer, utilice el método valueOf() de la clase Integer en lugar de parseInt().
  • Si necesita convertir cadenas a otras primitivas tipos de Java por ejemplo, long, utilice métodos Long.parseLong(), etc.

Reanudar

Espero que este ejemplo de conversión de String a int en Java haya sido útil. Si tienes dudas o comentarios déjalos en los comentarios.

Traducción del artículo “ Cómo convertir una cadena Java a un Int” fue preparado por el amigable equipo del proyecto.

Bueno Malo

    La clase Integer es un contenedor para el tipo. datos enteros. Esta clase incluye métodos para convertir valores de una cadena a un objeto Integer. este manual contiene...

nivel aproximado conocimientos necesarios: Búsqueda de sintaxis de Java y un poco de Java Core.

Al final de la primera misión de JavaRush, aprendemos sobre la conversión de tipos. En las conferencias de nivel 10 pudiste ver que convertir un int a String es muy simple y, en general, casi cualquier tipo primitivo se puede convertir a String sin problemas. int x = 5 ;.

Texto de cadena = "X=" + x;

La línea básica que convierte una cadena en un número entero: int i = Integer. parseInt(miCadena); Si la cadena representada por la variable myString es un número entero válido, como "1", "200", Java la convertirá silenciosamente al tipo de datos primitivo int. Si por alguna razón esto falla, al hacerlo se puede generar una excepción NumberFormatException, por lo que necesitamos un poco más de código para que el programa funcione correctamente para cualquier cadena. Un programa que demuestra el método de conversión de cadena Java a int, gestionando una posible excepción NumberFormatException: clase pública JavaStringToIntExample (public static void main (String args) (// Cadena s = "fred"; //usa esto si necesitas probar //la excepción a continuación Cadena s = "100"; intentar ( // aquí es donde String se convierte a int int i = Entero. parseInt(s. trim());

// muestra el valor después de la conversión

Sistema. afuera. println("int i = " + i);
  • ) catch (NumberFormatException nfe) ( System. out. println ( "NumberFormatException: " + nfe. getMessage () ); ) )
  • Discusión
  • Cuando estudies el ejemplo anterior, verás que el método Integer.parseInt(s.trim()) se usa para convertir la cadena s en un entero i, y esto sucede en la siguiente línea de código: int i = Integer. parseInt (s. trim ()) Pero a veces convertir una cadena en un número simplemente no funciona. En nuestro ejemplo, dicha cadena es el nombre fred. Podemos hablar de códigos en los que se escriben letras en una computadora, pero, formalmente hablando, fred no es un número y es mejor dejarlo como una cadena. Nuestro programa está diseñado para que cuando intente convertir "fred" en un número, el proceso Integer parseInt arroje una excepción NumberFormatException, que debe manejar en un bloque try/catch. En este caso, no es necesario utilizar el método trim() de la clase String, pero en la programación real deberías utilizarlo. Así que te lo mostramos. Dado que surgió este tema, aquí hay algunos "consejos" sobre el tema de las clases String e Integer: Integer.toString(int i) se utiliza para convertir int en cadenas Java. Si desea convertir un objeto String en un objeto Integer (en lugar de la clase int primitiva), use el método valueOf() de la clase Integer en lugar del método parseInt().
Si necesita convertir cadenas a primitivas adicionales campos java



Arriba