强制类型转换;
特点:代码需要进行特殊的格式处理,不能自动完成。
格式:范围小的类型,范围小的变量名 =(范围小的类型) 原本范围大的数据。
例如 int num =100L;
int num = (int) 100L; 注意:右边那个数据(100L)不要超出左边类型的范围,否则会溢出。
例题1:
long强制转换为int类型;
int num2 =(int) 6000000000(L);
sout............(num2);
结果; 1705032704.
原因;int 的取值21亿,但60亿以经超出范围,所以溢出了,就导致结果是17亿多。
char zhifu = 'A';
sout..................(zhifu + 1);
结果:66
这是一个字符变量, 里面是大写字母A,66也是大写字母A被加了1后 才得到的66, 那原本就是65,
计算机的底层会用一个数字(二进制)来代表字符A, 就是65.
一但char类型进行了数字运算,那么字符就会按照一定的规则翻译成功为一个数字。
例题2:
double强制转换int类型;
int num3 = (int) 3.9;
sout....................(num3);
结果是 3.
原因; int 是整数型的, 但3.9的int经过转换的话,那么只能保留整数3。
@@强制类型的转换一般不推荐使用,因有可能发生精度损失,数据溢出。
@@@ byte short char 这三类型都可以发生数学运算,例如加法" + ".
byte short chat 这三类型在运算的时候。都会被首先提升成为 int 类型,然后再进行计算
boolean 类型不能发生数据类型转换。
byte +short => int +int => int
byte num = 40;
short num1 = 60;
short + resulf = (short)(num +num1);
sout ........................(resulf);
结果; 100,
int强制转换为 short: 注意必须保证逻辑上真实大小本来就没有超出short范围否则会发生数据溢出。
补充点。
------------------------------------------------
原:
char zifu = 'I';
sout ......................(zifu + 0);
结果;49
简化后;
char zifu = 'c'; //左侧是int类型。 右边是char类型。
int num = zifu; //char => int 确实是从小到大。
sout....................(num); //发生了自动类型转变。
结果; 99。
