Java 中的擴充套件轉換(隱式)和縮窄轉換(顯式)有什麼區別?


Java 中的**型別轉換**用於將一種型別的物件或變數轉換為另一種型別。當我們轉換或分配一種資料型別到另一種資料型別時,它們可能不相容。如果合適,它將順利進行,否則可能會導致資料丟失。

Java 中的型別轉換型別

Java 型別轉換分為兩種型別。

  • 擴充套件轉換(**隱式**)– 自動型別轉換
  • 縮窄轉換(**顯式**)– 需要顯式轉換

擴充套件轉換(從小型別到大型別)

如果兩種型別相容且目標型別大於源型別,則可以發生**擴充套件型別轉換**。當**兩種型別相容**且**目標型別大於源型別**時,就會發生擴充套件轉換。

示例 1

線上演示

public class ImplicitCastingExample {
   public static void main(String args[]) {
      byte i = 40;
      // No casting needed for below conversion
      short j = i;
      int k = j;
      long l = k;
      float m = l;
      double n = m;
      System.out.println("byte value : "+i);
      System.out.println("short value : "+j);
      System.out.println("int value : "+k);
      System.out.println("long value : "+l);
      System.out.println("float value : "+m);
      System.out.println("double value : "+n);
   }
}

輸出

byte value : 40
short value : 40
int value : 40
long value : 40
float value : 40.0
double value : 40.0

類型別的擴充套件轉換

在下面的示例中,我們正在將較小型別的**子類**分配給較大的型別的**父類**,因此不需要進行轉換。

示例 2

線上演示

class Parent {
   public void display() {
      System.out.println("Parent class display() called");
   }
}
public class Child extends Parent {
   public static void main(String args[]) {
      Parent p = new Child();
      p.display();
   }
}

輸出

Parent class display() method called

縮窄轉換(從大型別到小型別)

當我們將較大型別分配給較小型別時,需要進行**顯式轉換**。

示例 1

線上演示

public class ExplicitCastingExample {
   public static void main(String args[]) {
      double d = 30.0;
      // Explicit casting is needed for below conversion
      float f = (float) d;
      long l = (long) f;
      int i = (int) l;
      short s = (short) i;
      byte b = (byte) s;
      System.out.println("double value : "+d);
      System.out.println("float value : "+f);
      System.out.println("long value : "+l);
      System.out.println("int value : "+i);
      System.out.println("short value : "+s);
      System.out.println("byte value : "+b);
   }
}

輸出

double value : 30.0
float value : 30.0
long value : 30
int value : 30
short value : 30
byte value : 30


縮窄類型別

當我們將較大型別分配給較小型別時,我們需要**顯式**地進行**型別轉換**。

示例 2

線上演示

class Parent {
   public void display() {
      System.out.println("Parent class display() method called");
   }
}
public class Child extends Parent {
   public void display() {
      System.out.println("Child class display() method called");
   }
   public static void main(String args[]) {
      Parent p = new Child();
      Child c = (Child) p;
      c.display();
   }
}

輸出

Child class display() method called

更新於: 2020-02-06

4K+ 瀏覽量

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.