在 Java 中强制转换变量
本文介绍如何在 Java 中强制转换变量或将变量转换为另一种类型。
转换用于在编程语言中将一个值/变量转换/转换为另一种类型。Java 支持丰富的数据类型,如 int
、float
、double
、boolean
等,在编写代码时,可能需要转换变量。
Java 支持两种类型的转换,隐式转换和显式转换。如果我们将 int
转换为 long
或 double
,那么 Java 会隐式执行此操作,因为 long
和 double
使用的字节数比 int
多,我们会执行相反的操作(即,将 double
转换为 int
) 那么它可能会由于整数容量而导致数据丢失。
因此,Java 允许在较低数据类型到较高数据类型之间进行隐式转换,但在较高数据类型到较低数据类型之间进行显式转换。让我们通过一些例子来理解。
Java 中的隐式转换
在这里,在这个例子中,我们将 int
转换为 float
类型,隐式转换。由于 Java 允许在没有太多代码的情况下进行隐式转换,因此该代码可以正常工作。
public class SimpleTesting {
public static void main(String[] args) {
int a = 23;
System.out.println("int " + a);
// int to float - implicit casting
float f = a;
System.out.println("float " + f);
}
}
输出:
int 23
float 23.0
Java 中的显式转换
在某些情况下,由于数据丢失,Java 确实需要显式转换。
例如,如果我们将 float
转换为 int
,那么小数点后的值会被截断;这就是 Java 不隐式执行此操作并引发编译时错误的原因。请参见下面的示例。
public class SimpleTesting {
public static void main(String[] args) {
float a = 23;
System.out.println("float " + a);
// float to int - explicit casting
int f = a;
System.out.println("int " + f);
}
}
输出:
Type mismatch: cannot convert from float to int
这个编译时错误是对程序员的警告,以避免这种数据丢失。如果程序员仍想进行类型转换,Java 允许使用类型名称将类型名称括在函数括号中的类型转换运算符。
此编译器编译并执行代码,但看到值被截断。请参见下面的示例。
public class SimpleTesting {
public static void main(String[] args) {
float a = 23.5f;
System.out.println("float " + a);
// float to int - explicit casting
int f = (int) a;
System.out.println("int " + f);
}
}
输出:
float 23.50
int 23
我们还可以使用 cast()
方法将对象值转换为原始值。请参见下面的示例。
public class SimpleTesting {
public static void main(String[] args) {
Integer a = 23;
System.out.println("integer " + a);
// float to int - explicit casting
int i = (Integer.class.cast(a));
System.out.println("int " + i);
}
}
输出:
integer 23
int 23
在 Java 中避免 CastException
转换 Java 对象也是一个主要问题,在转换之前需要正确的类类型。例如,如果我们用 double
强制转换 float
类型,Java 不允许这样做并将 ClassCastException
抛出到控制台。
请参见下面的示例。
public class SimpleTesting {
public static void main(String[] args) {
Number num = new Float(15.5);
System.out.println(num);
Double d = (Double) num;
System.out.println(d);
}
}
输出:
15.5
Exception in thread "main" java.lang.ClassCastException
相关文章
Java 中的计数器
发布时间:2023/11/16 浏览次数:177 分类:Java
-
它描述了 Java 中计数器变量的使用今天我们将讨论 Java 中的 counter 变量。在接下来的部分中,我们将看到如何使用 counter 变量。
Java 中 static 变量和 final 变量之间的区别
发布时间:2023/11/16 浏览次数:143 分类:Java
-
它显示了 Java 中静态变量和最终变量之间的区别。此外,将通过代码示例讨论这两个变量的使用。本文展示了 static 和 final 关键字之间的区别。让我们以表格格式和工作示例讨论差异。
在 Java 中设置 JAVA_HOME 变量
发布时间:2023/11/16 浏览次数:149 分类:Java
-
本文介绍如何在 Java 中设置 java_home 变量。在本文中,我们将学习如何在 windows 中设置 JAVA_HOME 变量。Java_Home 是一个引用变量,
如何在 Java 中获取用户输入
发布时间:2023/11/16 浏览次数:160 分类:Java
-
本文介绍了在 Java 中获取用户输入的最简单方法。在本文中,我们将讨论在 Java 中获取用户输入的最佳方法。虽然有很多方法,但其中一些方法已经被废弃,因此我们将避免使用它们。
在 Java 中初始化布尔变量
发布时间:2023/11/15 浏览次数:83 分类:Java
-
本文介绍如何在 Java 中初始化布尔变量。在 Java 中,Boolean 是包装原始数据类型 boolean 类型的包装类。
使用 Java 中的 printf() 方法打印布尔值
发布时间:2023/11/15 浏览次数:93 分类:Java
-
本文介绍了在 Java 中打印布尔值的 printf() 方法。本文介绍了在 Java 中打印布尔值的 printf() 方法。Boolean 是 Java 中的一种数据类型,它包含 true 或 false 文字。
在 Java 中检查输入是否为整数
发布时间:2023/11/15 浏览次数:86 分类:Java
-
本文介绍了如何在 Java 中判断一个输入是否为整数。问题指出,我们需要检查 Java 语言中的输入是否为整数。使用 Java 中的 hasNextInt 方法检查输入是否为整数
在 Java 中比较两个整数
发布时间:2023/11/15 浏览次数:129 分类:Java
-
本文介绍如何在 Java 中比较两个整数。本文介绍了如何比较 Java 中的两个整数。要比较 Java 中的整数值,我们可以使用 equals() 方法或 ==(等于运算符)。
Java 中的整数除法
发布时间:2023/11/15 浏览次数:59 分类:Java
-
本文介绍了 Java 中整数除法是如何发生的。本文详细介绍了当我们将两个整数相除时内部会发生什么。在下面的 Java 代码中,有四个 Java 语句。每行根据彼此相除的数字打印不同的输出。