Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误与异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 与框架

Java 类参考

Java 有用资源

Java 类型转换



Java 类型转换

类型转换是在 Java 中由编译器或程序员用来将一种数据类型转换为另一种数据类型的技术。类型转换也称为类型转换。例如,将 int 转换为 double,double 转换为 int,short 转换为 int 等。

Java 编程中允许两种类型的类型转换

  • 扩展类型转换
  • 缩窄类型转换

扩展类型转换

扩展类型转换也称为隐式类型转换,其中较小的类型转换为较大的类型,由编译器自动完成。

层次结构

以下是 Java 中扩展类型转换的层次结构

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

编译器在类型转换中起作用,而不是程序员。它在编译时更改变量的类型。此外,类型转换仅发生从小数据类型到大数据类型。

示例

在此示例中,我们添加了一个整数和一个双精度数,将结果存储在双精度变量中以显示总和,在加法过程中隐式地将整数转换为双精度数

package com.tutorialspoint;

public class Tester {
   // Main driver method
   public static void main(String[] args) {
      // Define int variables
      int num1 = 5004;
      double num2 = 2.5;
      double sum = num1 + num2;
      // show output
      System.out.println("The sum of " + num1 + " and " + num2 + " is " + sum);
   }
}

编译并运行 Tester。这将产生以下结果 -

输出

The sum of 5004 and 2.5 is 5006.5

类型转换错误

当您尝试将较大数据类型的值分配给较小数据类型的变量而没有显式转换时,就会发生类型转换错误。

Java 编译器在兼容类型之间分配值时执行隐式类型转换,但它不允许在没有显式类型转换的情况下将较大数据类型转换为较小数据类型。

示例

在下面的示例中,我们演示了当编译器尝试将大数据类型转换为小数据类型时,我们可能会遇到错误。在这里,我们创建了 num1 整数和 num2 双精度变量。num1 和 num2 的总和将为双精度数,当我们尝试将其存储到 int 类型的总和时,编译器会给出错误。

package com.tutorialspoint;

public class Tester {
   // Main driver method
   public static void main(String[] args) {
      // Define int variables
      int num1 = 5004;
      double num2 = 2.5;
      int sum = num1 + num2;
      // show output
      System.out.println("The sum of " + num1 + " and " + num2 + " is " + sum);
   }
}

编译并运行 Tester。这将产生以下结果 -

输出

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Type mismatch: cannot convert from double to int

	at com.tutorialspoint.Tester.main(Tester.java:9)

缩窄类型转换

缩窄类型转换也称为显式类型转换显式类型转换,由程序员手动完成。在缩窄类型转换中,可以将较大类型转换为较小类型。

当程序员在编写代码时更改变量类型时。我们可以使用强制转换运算符来更改变量的类型。例如,double 到 int 或 int 到 double。

语法

以下是缩窄类型转换的语法,即手动类型转换

double doubleNum = (double) num;

以上代码语句将变量转换为 double 类型。

示例

在下面的示例中,我们定义了整数类型的 num 变量并将其初始化为该值。此外,我们定义了 double 类型的 doubleNum 变量,并在将其转换为 double 后存储 num 变量的值。

接下来,我们创建了 'convertedInt' 整数类型变量,并在类型转换为 int 后存储了 double 值。在输出中,我们可以观察到 double 和 int 变量的值。

package com.tutorialspoint;

public class Tester {
   // Main driver method
   public static void main(String[] args) {
      // Define int variable
      int num = 5004;
      // Type casting int to double
      double doubleNum = (double) num;
      // show output
      System.out.println("The value of " + num + " after converting to the double is " + doubleNum);
      // Type casting double to int
      int convertedInt = (int) doubleNum;
      // show output
      System.out.println("The value of " + doubleNum + " after converting to the int again is " + convertedInt);
   }
}

编译并运行 Tester。这将产生以下结果 -

输出

The value of 5004 after converting to the double is 5004.0
The value of 5004.0 after converting to the int again is 5004
广告