Java—类型转换
在进行运算时,不同类型的数据是不能直接进行运算的;而在Java中,当我们对数据应用数学运算符时,有两种类型转换——1.隐式类型转换 2.强制类型转换
在看本篇文章前,可尝试完成下面这到题:
char a = 'A';
float b = 1.0f;
long c = 12;
数据类型 d = a + b + c;
Q:该数据类型是?
A. char B. float C. long D. int
Q:d等于多少?
A. "A1.of12" B."A13" C.78 D.78.0
(答案在本文最后)
一.隐式类型转换
隐式类型转换,也称自动类型提升
隐式转换:自动将小范围数据,转换为大范围数据(自动完成转换,不需要人为转换);由小到大
1. 转int
隐式转换时:不足4字节的数据类型,会转化为int类型
即,1字节的byte,2字节的short 和 char,进行运算时均会转换为int类型(boolean类型不会参与)
举例:
Q:表示整数的byte 和 short 类型转换为int类型可以理解,但表示字符的char,如何转换为int?
A:ascall码表
二. 强制转换
强制类型转化:将大范围的数据类型转化为小范围的数据类型
代码展示
long a = 123L;
int b = (int) a;
System.out.println(b); // 123
Q:既然强制类型转换是大范围转小范围,那么如果数据大于小范围的最大值,会怎样处理?
A:数据在计算机中都是以二进制补码的方式进行存储,会发生截断,只截取后八位