java的隐式类型转换和强制转换类型
隐式类型转换:
public class Test {public static void main(String[] args) {// 10 是 int 类型,12.3 是 double 类型,运算结果提升为 double 类型double a = 10 + 12.3; byte num1 = 10;short num2 = 20;// byte 和 short 运算时会先提升为 int 类型,结果也为 int 类型int num3 = num1 + num2; // 'a' 是 char 类型,参与运算时提升为 int(ASCII 码值 97),再和 10(int)、12.3(double)运算,最终结果提升为 double 类型double b = 10 + 'a' + 12.3; }
}
强制类型转换
public class TypeConversionDemo {public static void main(String[] args) {// 1. 自动类型提升示例// int与double运算,结果自动提升为doubledouble a = 10 + 12.3; System.out.println("10 + 12.3 的结果(double):" + a);// byte和short运算,自动提升为intbyte num1 = 10;short num2 = 20;int num3 = num1 + num2; System.out.println("byte + short 的结果(int):" + num3);// char、int、double混合运算,最终提升为doubledouble b = 10 + 'a' + 12.3; // 'a'的ASCII值为97System.out.println("10 + 'a' + 12.3 的结果(double):" + b);// 2. 强制类型转换示例double doubleNum = 12.8;int intNum = (int) doubleNum; // 强制将double转换为int,丢失小数部分System.out.println("double 12.8 强制转换为int:" + intNum);// 注意:强制转换可能导致精度丢失或数据溢出int largeNum = 300;byte smallNum = (byte) largeNum; // int转byte可能溢出System.out.println("int 300 强制转换为byte:" + smallNum); // 结果为44(因byte范围为-128~127)}
}