如何在Java中进行类型转换

124 阅读4分钟

Java中的类型投递

类型转换是将数据从一种数据类型转换为另一种数据类型的一种方式。这个数据转换的过程也被称为类型转换或类型强制。

在Java中,我们可以对引用和原始数据类型进行转换。通过使用转换,数据不能被改变,只是数据类型被改变。

注意:对于Boolean 数据类型,类型转换是不可能的。

在Java中有13种类型的转换。在这篇文章中,我们将只看2种主要类型。

  1. 隐式转换。
  2. 显式转换。

隐式转换

这种类型的转换也被称为拓宽铸造。当从一个较窄范围的数据类型转换到一个较宽范围的数据类型时,它会自动发生。它也意味着将一个较低的数据类型(如int )转换为一个较高的数据类型(如double )。

隐式转换在两个条件下发生。

  • 数据类型的相容性。例如,像数字这样的数据类型与其他数字数据类型兼容,但它们与布尔、char或字符串数据类型不兼容。同样,如string ,与布尔数据类型不兼容。
  • 如果要转换的目标值具有较小的长度,如4字节,到较大的数据类型,如8字节。

隐式铸造是按照如下的转换顺序进行的。

Byte -> Short -> Char -> Int -> Long -> Float -> Double  

让我们看看Java中隐式类型转换的一个例子。

在这里,我们将通过使用一个简单的赋值运算符把一个int 的值转换成一个long 的值,最后转换成一个double 的值。

public class Main {
  public static void main(String[] args) {
    int a = 20;
    long b = a;     //implicit casting from int to long data type
    double c = b;   // implicit casting from long to double data type

    System.out.println(a);
    System.out.println(b);
    System.out.println(c);
  }
}

输出。

20
20
20.0

我们也可以通过实例化一个double 类或使用double.valueOf() 方法,将一个int 转换为一个double 数据类型。这种方式也适用于将一个int转换为一个long 数据类型。

明确的类型转换

这种类型的转换涉及到将一个高范围的数据类型分配给一个低范围的数据类型。这个转换的过程也被称为缩小类型铸造。

这是手动完成的,因为你需要使用"() "操作符进行转换。如果我们没有进行铸造,编译器将返回一个编译时错误。

显式铸造是按照如下的转换顺序进行的。

Double -> FLoat -> Long -> Int -> Char -> Short -> Byte

让我们看看Java中显式铸造的一个例子。

public class Main  {  
  public static void main(String args[])  {  
    double d = 57.17;  
    int i = (int)d;  // Explicit casting from long to int data type
    System.out.println(d);  
    System.out.println(i);  //fractional part lost
  }  
}

输出。

57.17
57
57

在上面的例子中,我们将double数据类型转换为int 数据类型。在类型转换之后,数值的小数部分就丢失了。

Java封装类

为了将原始数据类型转换为对象,我们需要包装类。我们可以从用户那里获得string ,例如 "1234",然后,将其转换为int 数据类型,反之亦然。比如说。

String a = "1234";
int b = Integer.parseInt(a);  // converting string to int

在Java中,所有的原始封装类都是不可改变的,即当我们创建一个新的对象时,旧的对象不能被改变,没有例外。

创建封装器对象的方法

1.使用双倍包装器类构造函数

我们可以通过将int 的值传递给Double 包装器类的构造函数,将int 转换成double 数据类型。

比如说

public class Main {
  public static void main (String args[]) {
      
    int num = 67;
    Double myDouble = new Double(num); // using Double wrapper class
  
    // showing the double value
    System.out.println("My double is " + myDouble);
  }
}

输出。

My double is 67.0

2.使用Java Double valueOf()方法

在这个方法中,我们使用Double 包装类中的valueOf() 方法将int 转为double

public class Main {
  public static void main (String[] args) {
      
    int myInt = 67;
    Double myDouble = Double.valueOf(myInt);// converting int to double using the Double valueOf() method
  
    System.out.println("My double is " + myDouble);
  }
}

输出结果。

My double is 67.0

结论

在这篇文章中,我们已经了解了数据类型转换的不同方法。我们现在可以很容易地从一个数据类型转换到另一个数据类型。