类型转换:大类型向小类型转换

大类型向小类型转换为强制类型转换,也称强转或显式类型转换

例:

byte b= 7; //字面量7为int类型

b= b+5;//编译器报错,原因b+5是int类型

b= (byte)(b+5);//应该把b+5强转成byte类型,这样就不报错了

b = 5+7 ;//如果是5+7就不报错了,b+5可以直接计算出结果,结果12会在编译的时候就被存在变量b中,而b+5不能直接编译器不能直接确定结果(需要带入7),编译器会把它当做int类型处理,所以会报错

大类型转换小类型时,源数据的数据位变成目标数据的符号位

举个例子解释这句话

int i =129;//声明int类型变量129

byte b = (byte)i;//把i强转成byte类型

byte类型的最大值是127,129转成byte类型之后结果肯定不是原来的129,那么b的值是多少呢?

解:

把129转换成二进制

129=10000001//如果是储存在int类型中,他就是正129,要是储存在byte类型中,由于最高位是1所以是一个负数,那么是负几呢?

把10000001转换成十进制,

 01111111 先逐为取反再加以1

计算得出01111111 =127
因为129转换的二进制值(10000001)最高位是1,所以是一个负数,结果是-127

 进制之间的相互转换可参考http://www.cnblogs.com/sflik/p/4396468.html

原文地址:https://www.cnblogs.com/sflik/p/4425892.html