本文是《Java 入门指南》的第七篇文章,介绍了 Java 的类型转换(自动转换 和 强制转换)。

为什么要进行类型转换?

Java 是一门强类型语言,变量的使用要严格符合规定,所有变量必须先定义之后才能使用。

不同类型的变量进行运算时,要先转换为同一类型,才能进行运算。

在这个过程中,要进行类型转换(自动转换 和 强制转换)。

自动转换

描述:

数据类型从低精度转化为高精度,这个过程自动完成(隐式转换),被称为自动转换。

float 的取值范围大于 int,所以 float 的精度大于 int。

低  --------------------------------------------------------------------->  高

byte(1字节),short(2字节),char(2字节)—> int(4字节) —> long(8字节)—> float(4字节) —> double(8字节) 

实例:

示例代码:

public class Test {

    public static void main(String[] args) {

        //定义一个变量,变量类型为 char,变量名为 c1。
        char c1='a'; 

        //char 自动转换为 int。
        int i1=c1; 

        System.out.println("char 转化为 int 的值:"+i1);

        //定义一个变量,变量类型为 char,变量名为 c2。
        char c2='A'; 

        //char 自动转换为 int,然后再进行运算。
        int i2=c2+1; 

        System.out.println("char 和 int 运算后的值:"+i2);

    }

}

运行结果:

char 转化为 int 的值:97
char 和 int 运算后的值:66

强制转换

描述:

数据类型从高精度转化为低精度,这个过程手动完成,被称为强制转换。

这个过程中,可能存在溢出或损失精度。

格式:(数据类型)变量名 。

实例:

示例代码:

public class Test {

    public static void main(String[] args) {

        //定义一个变量,变量类型为 int,变量名为 i1。
        int i1=128; 

         //int 强制转换为 byte,而 byte 的最大值为 127,这个过程中会出现溢出。
        byte b1=(byte) i1;

        //-128。
        System.out.println("int 强制转换为 byte 的值:"+b1); 

        //定义一个变量,变量类型为 float,变量名为 f1。
        float f1=3.1415926F; 

        //float 强制转换为 int,这个过程中会损失精度。
        int i2=(int)f1; 

        System.out.println("float 强制转化为 int 的值:"+i2); //3。


    }

}

运行结果:

int 强制转换为 byte 的值:-128
float 强制转化为 int 的值:3

注意事项

  1. 不能对 boolean 类型进行类型转换。
  2. 不能把数据类型转换为不相干的数量类型。