/*
Conversión automática
1. Explícita: no es necesario procesar el código y las
reglas de conversión se completan directamente: el rango de datos es de pequeño a grande
*/
public class demo05{ public static void main(String[] args){ System.out.println(30); //Emite directamente un número entero, el valor predeterminado es Int type System.out.println(3.12);//Emite directamente un decimal, el valor predeterminado es double type long numer1=100;//Data conversión entre enteros //(1) Lado izquierdo Es de tipo long, y el lado derecho es de tipo int por defecto. //(2) La asignación del signo igual, el lado derecho se asigna al lado izquierdo //(3 ) int——>long, que satisface el rango de datos del tamaño izquierdo y el tamaño derecho //(4) Esta línea de código ocurre Sistema de conversión automática .out.println(nume1);//100 double nume2=3.14159267F; //Conversión de datos entre números de punto flotante //(1) doble a la izquierda, flotante a la derecha; //(2) de doble ->flotante; Para cumplir con el rango de datos de tamaño izquierdo y tamaño derecho, conversión de tipo automática también ocurre System.out.println(numero2); flotante numero3 =30L;
//(1) Desde long->float, el rango de float es mayor que long, lo que satisface el rango de datos de large left y right small
//(2) La conversión automática ocurre en esta línea de código
System.out.println( numero3);
}
}
/*Conversión forzada
1. Características: el código debe procesarse en un formato especial y no puede completarse automáticamente
2. Formato: tipo con un rango pequeño + nombre de variable con un rango pequeño = (tipo con un rango pequeño) + datos con un rango grande
Nota:
1 La conversión obligatoria generalmente no se recomienda debido a un posible desbordamiento de datos y pérdida de precisión.
2. Los tres tipos de byte/short/char se pueden usar para operaciones matemáticas
3. Cuando se operan los tres tipos de byte/short/char, primero se hará referencia al tipo int
Conversión de tipo de datos
*/
clase pública demo06{ public static void main(String[] args){ //El lado izquierdo es de tipo int, el lado derecho es largo //largo->int, no de pequeño a grande, no se puede convertir automáticamente después de terminar / /Formato ; tipo de datos con rango pequeño + nombre de variable con rango pequeño = (tipo de datos con rango pequeño) + datos originales con rango grande int nume1=(int)100L; System.out.println(nume1); /* //largo -> int (cast) int numero2=6000000000; System.out.println(numero2);//1705032704 desbordamiento */
//doble->int (casting)
int nume2=(int)3.99;
System.out.println(nume2);//3 (esto no es redondeo, sino redondeo de lugares decimales) pérdida de precisión
char nuem3='A';//Esta es una variable de carácter 'A'
System.out.println(nume3+1);//66 es decir, la letra A mayúscula se trata como 65 para el procesamiento
//La capa inferior de la computadora usará un número (binario) para representar el carácter 'A', que es 65
//Una vez que el carácter se opere matemáticamente, el carácter se traducirá a un número de acuerdo con ciertas reglas
/*
byte number4=40;// El tamaño del valor en el lado derecho No puede exceder el rango de valores en el
byte de la izquierda numer5=50;
byte result1=nume4+nume5;//(ambos se mencionarán primero como tipo int) int+int->int
System.out .println(resultado1);
*/
/*
Aquí se informará un error
*/
//La forma correcta de escribir es la siguiente:
byte nume4=40;//El tamaño del valor a la derecha no puede exceder el rango de valores en el byte izquierdo
numero5=50;
int resultado1=numero4+numero5;
//byte+bute->int +int->int
System.out.println(resultado1);//90
corto numero6=40;
//byte+corto->int+int->int
//int se convierte en
corto
//Tipo de datos mínimo + variable de datos mínima = (tipo de datos mínimo) + (datos con un rango original grande)
shiort result2=(short)(nume5+nume6);//90
}
}