本帖最后由 alucard 于 2014-4-6 21:04 编辑
强制类型转换: 将高级别类型赋值给低级别类型时,必须进行强制类型转换。 举例说明: - int i = 786;
- byte b = i;//错误
- byte b = (byte) i;//强制类型转换
- short s = i; //错误
- short s = (short)i; //强制类型转换
复制代码将整型变量i的值786直接赋给byte类型的变量b时,将出现编译错误,此时必须进行强制类型转换。那么怎么进行强制类型转换呢?强制类型转换的运算符是小括号,小括号内注明要转换的类型。比如第三行代码,byteb = (byte) i;完成强制类型转换。它的转换过程如图所示:
整型变量i在内存中占四个字节空间,低位的两个字节中存放786对应的二进制数,高位的两个字节全部为0。当赋值给byte类型变量b时,将直接取最后一个字节的内容复制到b的内存空间中,完成强制类型转换,也就是说将它的00010010直接放在了b的内存空间,b的值就变为了18。可能你已经发现了,此时产生了数据丢失。它前面的00000011数据不见了。我们再看第五行代码,当赋值给short类型变量s时,将直接取最后两个字节的内容复制到s的内存空间中,完成数据类型转换。此时并没有丢失数据。
看这个图,它直接将低的两个字节内容放到了s的空间当中,此时数据并没有发生丢失。
那从上面的例子中可以看出,进行强制类型转换的时候,可能会导致数据的丢失。这一点一定要注意。
|