自动类型转换和强制类型转换

如果系统支持把某种基本类型的值直接赋给另一种基本类型的变量,这种方式被称为自动类型转换。当把一个取值范围小的数值或变量直接赋给另一个取值范围大的变量时,系统可以进行自动类型转换。

Java 中所有数值型变量之间可以进行类型转换,取值范围小的可以向取值范围大的进行自动类型转换。就好比有两瓶水,当把小瓶里的水倒入大瓶时不会有任何问题。Java 支持自动类型转换的类型如下图所示。

在上图所示的类型转换图中,箭头左边的数值可以转换为箭头右边的数值。当对任何基本类型的值和字符串进行连接运算时,基本类型的值将自动转换为字符串类型,尽管字符串类型不再是基本类型,而是引用类型。因此,如果希望把基本类型的值转换为对应的字符串,可以对基本类型的值和一个空字符串进行连接。

如果希望把上图中箭头右边的类型转换为左边的类型,则必须使用强制类型转换。Java 中强制类型转换的语法格式如下所示。

(targetType)value
public class QiangZhi {
    public static void main(String[] args) {
        int iValue = 233; // 定义 int 型变量 iValue 的初始值是 233
        // 强制把一个 int 类型的值转换为 byte 型
        byte bValue = (byte) iValue;
        // 将输出-23
        System.out.println(bValue);
        double dValue = 3.98;
        // 强制把一个 double 类型的值转换为 int 型
        int toI = (int) dValue;
        // 将输出 3
        System.out.println(toI);
    }
}

在上述代码中,当把一个浮点数强制类型转换为一个整数时,Java 将直接截断浮点数的小数部分。除此之外,上面的程序还把 233 强制类型转换为 byte 型整数,从而变成 −23,这就是典型的溢出。

原文地址:https://www.cnblogs.com/sakura579/p/13844186.html