一、介绍
自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,格外要注意。
- 案例
(1) 精度损失
int n1 = (int)1.9;
System.out.println("n1="+n1);
out:1
(2) 数据溢出
int n2 = 2000;
byte b1 = (byte)n2;
System.out.println("n2="+n2);
out:-48
解释:2000的二进制补码为0111 1101 0000,byte占一个字节,取后八位补码1101 0000,此补码表示负数,转换为十进制就是-48
二、使用细节
- 当进行数据的大小从大 ——> 小,就需要使用到强制转换
- 强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
int x = (int)10*3.5 + 6*1.5;
报错:这样的意思是把10转换成int类型,35.0+9.0=44.0,double类型赋值给int类型
int y = (int)(10*3.5 + 6*1.5);
out:44
- char类型可以保存 int 的常量值,但不能保存 int 的变量值,需要强转
char c1 = 100; //ok
int m = 100; //ok
char c2 = m; // 错
char c3 = (char)m; //ok
- byte、short、char 类型在进行运算时,先当做int类型处理。