在本教程中,我们将借助示例来学习Java 类型转换及其类型。
在学习Java类型转换之前,请确保您了解Java数据类型。
将一种数据类型(int,float,double等)的值转换为另一种数据类型的过程称为类型转换。
在Java中,有13种类型转换。但是,在本教程中,我们将只关注主要的两种类型。
1、自动类型转换
2、窄化转换
在自动类型转换中,Java自动将一种数据类型转换为另一种数据类型。
class Main { public static void main(String[] args) { //创建int类型变量 int num = 10; System.out.println("整数值: " + num); //转换为双精度型 double data = num; System.out.println("双精度值: " + data); } }
输出结果
整数值: 10 双精度值: 10.0
在上面的示例中,我们将名为num的int类型变量分配给名为data的双精度类型变量。
在这里,Java首先将int类型数据转换为double类型。然后将其分配给double变量。
在自动类型转换的情况下,较低的数据类型(具有较小的大小)将转换为较高的数据类型(具有较大的大小)。因此,没有数据丢失。这就是为什么这种类型的转换会自动发生的原因。
注意:这也称为隐式类型转换。
在强制类型转换中,我们使用括号将一种数据类型手动转换为另一种数据类型。
class Main { public static void main(String[] args) { //创建双精度型变量 double num = 10.99; System.out.println("double 值: " + num); //转换为int类型 int data = (int)num; System.out.println("integer 值: " + data); } }
输出结果
double 值: 10.99 integer 值: 10
在上面的示例中,我们将名为num的double变量分配给名为data的int型变量。
注意这一行,
int data = (int)num;
在这里,括号中的int关键字表示num变量被转换为int类型。
在强制类型转换的情况下,较高的数据类型(具有较大的大小)将转换为较低的数据类型(具有较小的大小)。因此,存在数据丢失。这就是为什么这种类型的转换不会自动发生的原因。
注意:这也称为显式类型转换。
让我们看一下Java中其他类型转换的一些示例。
class Main { public static void main(String[] args) { // 创建int类型变量 int num = 10; System.out.println("整数值为: " + num); //将int转换为字符串类型 String data = String.valueOf(num); System.out.println("字符串值为: " + data); } }
输出结果
整数值为: 10 字符串值为: 10
在上面的程序中,注意该行
String data = String.valueOf(num);
在这里,我们使用了Java String类的valueOf()方法将int类型变量转换为字符串。
class Main { public static void main(String[] args) { //创建字符串类型变量 String data = "10"; System.out.println("字符串值为: " + data); //转换字符串变量为int int num = Integer.parseInt(data); System.out.println("整数值为: " + num); } }
输出结果
字符串值为: 10 整数值为: 10
在上面的示例中,请注意以下行
int num = Integer.parseInt(data);
在这里,我们使用了Java Integer类的parseInt()方法将字符串类型变量转换为int变量。
注意:如果无法将字符串变量转换为整数变量,则会抛出异常 NumberFormatException。