首页 > 编程笔记 > Java笔记 阅读:14

Java类型转换的2种方式(自动类型转换和强制类型转换)

在 Java 程序中,整型、实型(常量)、字符型数据可以混合运算。运算过程中,不同类型的数据先转化为同一类型,然后进行运算,或者当一种数据类型变量的值赋给另外一种数据类型的变量时,也会涉及数据类型的转换。

数据类型的转换有两种方式,分别是自动类型转换(隐式类型转换)和强制类型转换(显式类型转换)。

Java自动类型转换(隐式类型转换)

从低级类型向高级类型的转换,系统自动执行,程序员无须进行任何操作,这种类型的转换称为隐式转换。

除了布尔型不参与转换外,其他数据类型转换的顺序如下:
byte,short,char -->int -->long -->float -->double
当进行赋值运算时,目标类型大于源类型,会自动进行类型转换。例如,在计算表达式的值时,参与运算的数据只要有一个是 double 型,则其他数据都会自动转换为 double,然后再进行运算,最后表达式的结果也是 double 型。

【实例】自动类型转换。
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);
    }
}
程序运行结果为:
char 自动类型转换为 int 后的值等于 97
char 类型和 int 计算后的值等于 65
c1 的值为字符 a,查 ASCII 码表可知对应 int 类型值为 97,A 对应值为 65,所以 i2=65+1=66。

Java强制类型转换(显式类型转换)

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

强制类型转换的语法规则如下:
(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 时候就会导致溢出。

另外,浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如如下代码:
(int)23.7 == 23;
(int)-45.89f == -45

相关文章