购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.5 数据类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,或者当一种数据类型变量的值赋给另外一种数据类型的变量时,也会涉及数据类型的转换。数据类型的转换有两种方式:隐式类型转换(自动转换)和显式类型转换(强制转换)。

2.5.1 隐式类型转换

从低级类型向高级类型的转换,系统自动执行,程序员无须进行任何操作。这种类型的转换称为隐式转换。除了布尔型不参与转换外,其他数据类型转换的顺序如下。

byte ,short,char -->int -->long -->float -->double

当进行赋值运算时,目标类型大于源类型,会自动进行类型转换。例如,在计算表达式的值时,参与运算的数据只要有一个是double型,则其他数据都会自动转换为double,然后再进行运算,最后表达式的结果也是double型。

【例2-14】自动类型转换。实例代码如下。


  public class AutoConvert {
        public static void main(String[] args) {
               char c1='a';//定义一个char类型
               int i1 = c1;// char自动类型转换为int
               System.out.println("char自动类型转换为int后的值等于"+i1);
               char c2 = 'A';//定义一个char类型
               int i2 = c2+1;// char 类型和 int 类型计算
               System.out.println("char类型和int计算后的值等于"+i2);
        }
  }

  

程序运行结果如图2-7所示。

图2-7 例2-14的运行结果

c1的值为字符a,查ASCII码表可知对应int类型值为97,A对应值为65,所以i2=65+1=66。

2.5.2 显式类型转换

当把高精度的变量的值赋给低精度的变量时,必须使用显式类型转换运算,又称强制类型转换。

强制类型转换的语法规则如下。


  (type)variableName;

  

其中,type为variableName要转换的数据类型,而variableName是要进行类型转换的变量名称,示例如下。


  int a = 3;
  double b = 5.0;
  a = (int)b;   //将double类型的变量b的值转换为int类型,然后赋值给变量a

  

如果此时输出a的值,结果是5。

需要注意的是,强制类型转换可能会导致数据精度的损失。例如如下代码。


  int i =128;
  byte b = (byte)i;

  

因为byte类型是8位,最大值为127,所以当int强制转换为byte类型时,值达到128时候就会导致溢出。

另外,浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如如下代码。 LZySnC4vJBpss4ngrG6X8m1Z3mniWjJ6UipjGoXrniYsdqBDNWRt7ihVdusMbys4


  (int)23.7 == 23;
  (int)-45.89f == -45

  
点击中间区域
呼出菜单
上一章
目录
下一章
×