En Java, a menudo se puede encontrar la conversión de tipo, desde la definición de variables hasta la copia, el cálculo de las variables numéricas a la transferencia de parámetros de los métodos, el modelado entre las clases base y las clases derivadas, etc. La conversión de tipo se puede ver en todas partes. La conversión de tipo en Java juega un papel importante en la codificación de Java.
Hay muchos problemas a los que prestar atención al definir variables. Si no tiene cuidado, perderá precisión o tipos incompatibles.
Por ejemplo:
1. Al definir datos enteros largos, se debe agregar el sufijo L o L.
largo L = 123456789012345L
2. Al definir un solo tipo de precisión (dígito significativo de 7-8 bits), se debe agregar el sufijo F o F.
flotante f = 12.5f
3. El tipo booleano no se puede convertir a otros tipos de datos.
Entre ellos, a menudo encontramos problemas de conversión de tipo de datos. Los más comunes son la conversión implícita y la conversión de fundición. Analicémoslo.
Conversión implícita
característica:
De pequeño a grande, se puede convertir implícitamente y el tipo de datos se mejorará automáticamente.
byte, short, char -> int -> long -> float -> double
Nota: Long es 8 bytes y Float es 4 bytes.
Long es un entero, Float es un tipo de punto flotante. Las reglas de almacenamiento para enteros y números de puntos flotantes son diferentes. Recuerde que el rango de largo es más pequeño que el flotador.
ejemplo:
byte a = 10;
int b = a;
Cuando intb = a se compila, A se convierte implícitamente en Tipo int.
Casos
característica:
De grande a pequeño (si sabe claramente que los datos pueden estar representados por este tipo de datos, puede usar la fundición)
Formato:
(Tipo de datos convertido) Variable o valor.
Nota: En general, el casting no se recomienda en absoluto.
Ejemplo 1:
int a = 10; byte b = (byte) a;
Cuando el byte b = (byte) a se compila, a se lanza al tipo de byte.
Ejemplo 2:
clase Qiangzhidemo {public static void main (string [] args) {byte b = (byte) 130; System.out.println (b); // Imprimir resultado-126}}Análisis:
Los datos 130 predeterminados a INT escriben datos decimales,
Paso 1: Convierta Decimal 130 en datos binarios.
10000010
Paso 2: La representación de 130 en la memoria es la siguiente
Código original: 00000000000000000000000 00000000 10000010
Paso 3: Encuentre el código de complemento de INT130
Debido a que 130 es un número positivo, el código inverso y el código del complemento son consistentes con el código original.
Código de complemento: 0000000000000000000000000 00000000 100000010
Paso 4: interceptar el código del complemento, dejando solo los últimos 8 dígitos.
(Byte) El código del complemento del 130 es: 10000010
Paso 5: Convierta este complemento en el código original.
Dado que el bit de signo (primer bit) es 1, el número es un número negativo.
Código inverso: 10000001 (código de complemento-1)
Código original: 111111110 (el bit del símbolo permanece sin cambios, el bit de datos está invertido)
Convierta a decimal a -126, así que finalmente imprima -126.
Ejemplo 3:
pantalones cortos = 1; s = s +1;
y
pantalones cortos = 1; s+= 1;
¿Hay algún problema? ¿Por qué?
Análisis:
El primer programa informará un error: Error: Tipo incompatible: puede haber pérdidas al convertir de int a breve
Causa: S = S+1; S+1 se convertirá implícitamente al tipo int. Cuando se asigna un tipo INT al tipo corto, se puede perder.
El segundo programa se puede compilar y ejecutar.
Razón: S+= 1, aunque puede considerarse como S = S+1, todavía hay una diferencia. Hay un yeso en S+= 1, es decir, S = (corto) (S+1), lo que forzará el valor de S+1 a Tipo corto, por lo que no habrá error.
resumen:
Si el problema de la conversión de tipo de datos ocurre en algunos mini programas, podemos ver de un vistazo. Sin embargo, al escribir un sistema enorme y tener una gran cantidad de datos, estos pequeños problemas pueden causar errores del sistema o incluso bloqueos, por lo que tenemos que comprender el rigor de la escritura de código temprano.
El contenido anterior presenta la conversión implícita Basic de Java frente a la conversión de reparto, espero que les guste.