Java 类型转换

Java 类型转换

类型转换指的是将一种原始数据类型的值赋给另一种类型。

在 Java 中,有两种类型的转换:

  • 放大转换(Widening Casting)(自动) - 将较小的类型转换为较大的类型
    byte -> short -> char -> int -> long -> float -> double
  • 缩小转换(Narrowing Casting)(手动) - 将较大的类型转换为较小的类型
    double -> float -> long -> int -> char -> short -> byte

放大转换(Widening Casting)

将较小尺寸的类型传递给较大尺寸的类型时,会自动完成放大转换:

实例

public class Main {
  public static void main(String[] args) {
    int myInt = 9;
    double myDouble = myInt; // 自动转换:int 到 double

    System.out.println(myInt);      // 输出 9
    System.out.println(myDouble);   // 输出 9.0
  }
}

亲自试一试

缩小转换

必须通过将类型放在值前面的括号中来手动完成缩小转换:

实例

public class Main {
  public static void main(String[] args) {
    double myDouble = 9.78d;
    int myInt = (int) myDouble; // 手动转换:double 转换为 int

    System.out.println(myDouble);   // 输出 9.78
    System.out.println(myInt);      // 输出 9
  }
}

亲自试一试

真实生活中的例子

以下是一个类型转换的实际实例,我们创建了一个程序来计算用户在游戏中的得分与最高分之间的百分比。

我们使用类型转换来确保结果是一个浮点值,而不是整数:

// 将游戏中的最高可能得分设置为 500
int maxScore = 500;

// 用户的实际得分
int userScore = 423;

/* 计算用户得分与最高可得分数之间的百分比。
将 userScore 转换为浮点数以确保除法运算准确。 */
float percentage = (float) userScore / maxScore * 100.0f;
System.out.println("User's percentage is " + percentage);

亲自试一试