Life

Wednesday, October 10, 2018

基本数据类型转换

        java允许除布尔类型之外的所有其他基本数据类型之间的相互转换。
      类型转换有两种基本方式。把某种类型的值转换为取值范围更广的类型,此时执行的是放大转换(widening conversion)。放大转换是隐式类型转换,也叫作自动类型转换, 由系统自动完成.是从存储范围小的类型转到存储范围大的类型。
      另一种方式是缩小转换(narrowing conversion)。把一个值转换为取值范围小的类型执行的是缩小转换。缩小转换是显示类型转换也叫作强制类型转换,此时可能会丢失精度。
这里要注意的是,byte可以隐式类型转换到short类型,但是需要强制类型转换到char类型。同时,short和char类型之间的类型转换也需要强制类型转换。

byte bt = 1;
char ch = 5;
short sh = 5;
ch = (char) bt;//byte转char需要强制转换
sh = bt;       //byte 转short是隐式转换
sh = (short) ch;//short 与 char 之间转换也是强制转换
ch = (char) sh;

我们知道char和short类型都占两个字节,为什么会出现这种情况呢?实际上虽然都是占两字节,但是表示的范围却不一样。
byte表示的范围是-2ˆ7~2ˆ7-1
char表示的范围是0~2ˆ16-1;
short表示的范围是-2ˆ15~2ˆ15-1
通过这几个范围我们就可以明白为什么byte转short是隐式转换,转char就要是显式转换。因为byte的表示范围在short表示范围内,但不再char的表示范围内。
char和short表示的范围不同,所以它们之间需要强制转换。
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者Leslie Tien和本文原始地址:
https://leslietien.blogspot.com/2018/12/blog-post_94.html

No comments:

Post a Comment