Java-类型转换

时间:2020-02-23 14:36:59  来源:igfitidea点击:

在本教程中,我们将学习Java编程语言中的类型转换。

什么是类型转换?

类型转换是将一种数据类型转换为另一种数据类型的过程。

如果我们可能不得不将一种类型的数据转换为另一种类型的数据,则可能会遇到这种情况。
为了执行该任务,我们使用以下类型转换的语法。

data_type variableName = (data_type) varName;

其中," varName"是一个变量,我们将其类型转换为给定的" data_type",并将结果保存到其他变量" variableName"中。

在以下示例中,我们将类型为" int"的变量类型转换为类型" double"。

//variable of type int
int a = 10;

//variable of type double
double d;

//type cast int to double
d = (double) a;

自动(隐式)类型铸造

在Java中,如果目标变量具有足够的空间来容纳源变量的值,则Java将自动执行类型转换。

例如," int"类型的变量为4个字节,而" byte"类型的变量为1个字节。
因此,byte变量将自动类型转换为int。

//byte variable
byte b = 10;

//int variable
int i;

//automatic type casting
i = b;

什么是显式类型转换?

在本文中,我们明确提到了要转换为的数据类型。

在下面的示例中,我们将类型为'float'的变量强制类型转换为int

//float variable
float f = 10.11F;

//int variable
int i;

//explicit type casting
i = (int) f;

加宽和缩小

将较小的数据类型分配给较大的数据类型的过程称为扩展。

将较大的数据类型分配给较小的数据类型的过程称为缩小。

缩小会导致信息丢失。

表达式中的自动类型转换

计算表达式时,计算机一次需要一个运算符,其中涉及两个操作数。
如果操作数的数据类型不同,则较小数据类型的操作数将自动类型转换为较高数据类型,以匹配其他操作数。

因此,如果表达式包含" byte"," short"和" int"类型的操作数,则结果始终会转换为" int"类型,以避免溢出。

同样,如果表达式中只有一个long型操作数,则整个表达式都将提升为long型。

同样,如果表达式包含单个" float"类型的操作数,则整个表达式将提升为" float"。

同样,如果表达式包含单个" double"类型操作数,则整个表达式将提升为" double"。

以下是类型转换表。

最终结果取决于赋值运算符符号左侧的变量的数据类型。

因此,如果左侧的变量是较小的数据类型,则结果会变窄。

将" double"转换为" float"时,会导致数字舍入。

当float转换为long和int时,会导致小数部分被截断。

当将long转换为int时,会导致多余的高位丢失。

表达式中的显式类型转换

对于显式类型转换,我们使用以下语法。

(type) expression

在下面的示例中,我们使用两个整数执行除法。

class Math {
  public static void main(String args[]) {
    int a = 5;
    int b = 2;
    float result = a/b;
    System.out.println("Result: " + result);
  }
}
Result: 2.0

我们可以看到,即使将结果保存在浮点数据类型变量中,但仍然没有得到实际的答案。

这是因为操作数a和b均为" int"类型,因此结果的小数部分将被截断。

为了解决这个问题,我们必须执行任何变量,如下所示。

class Math {
  public static void main(String args[]) {
    int a = 5;
    int b = 2;
    float result = (float) a/b;
    System.out.println("Result: " + result);
  }
}
Result: 2.5

现在,我们得到了所需的答案。