JAVA数据类型转换(自动数据类型转换)
-
自动类型转换(隐藏式)将 取值范围小的类型 自动提升为 取值范围大的类型 。
- 特点:代码不需要特殊处理,自动完成
- 规则:数据范围从小到大
数据类型 关键字 在内存中占用的字节数 取值范围 默认值 布尔型 boolean 1个字节(8位) true,false false 字节型 byte 1个字节(8位) -128 ~ 127 0 字符型 char 2个字节(16位) 0 ~ 216-1 ‘\u0000’ 短整型 short 2个字节(16位) -215 ~ 215-1 0 整型 int 4个字节(32位) -231 ~ 231-1 0 长整型 long 8个字节(64位) -263 ~ 263-1 0 单精度浮点型 float 4个字节(32位) 1.4013E-45 ~ 3.4028E+38 0.0F 双精度浮点型 double 8个字节(64位) 4.9E-324 ~ 1.7977E+308 0.0D -
规律总结
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
例如 一个 int 类型变量 和 一个byte类型变量 结果就会自动转化为 int 类型变量
-
代码展示
public class IntLongDoubleAutoChange { public static void main(String[] args) { byte b = 1; short s = 2; int i = 3; long l = 4L; double d = 5.1; float f = 4.4F; System.out.println("======="); System.out.println("byte + short = " + getType((b + s))); // int System.out.println("======="); System.out.println("byte + int = " + getType((b + i))); // int System.out.println("======="); System.out.println("short + int = " + getType((s + i))); // int System.out.println("======="); System.out.println("long + int = " + getType((l + i))); // Long System.out.println("======="); System.out.println("float + int = " + getType((f + i))); // Float System.out.println("======="); System.out.println("double + int = " + getType((d + i))); // Double System.out.println("======="); System.out.println("double + float = " + getType((d + f))); // Double System.out.println("======="); // 注意是数据范围 而非字节数 System.out.println("long + float = " + getType((l + f))); // Float } private static String getType(Object a) { return a.getClass().toString(); } }
-
运行结果显示