Java 多播(多次型別轉換)難題


簡介

Java 多播也稱為多次型別轉換。它是將值從一種資料型別轉換為另一種資料型別的過程,並且涉及多次型別轉換。它允許我們更改變數的資料型別以執行否則無法執行的操作。

讓我們討論 Java 中的多播。我們將討論數值多播以在數值資料型別之間進行轉換。我們還將討論物件多播以將子類物件視為超類物件。我們還將提供簡單的程式設計示例來輕鬆理解此主題。

Java 中的數值多播

在此程式設計示例中,我們將看到 Java 中的數值多播。

示例

public class first 
{
   public static void main (String args [])
   {
      // First we will do type cast int to byte
      int num1 = -1;
      byte num2 = (byte) num1;
      System.out.println ("Step 1 - int to byte:");
      System.out.println ("num1 (int) = " + num1);
      System.out.println ("num2 (byte) = " + num2);
      
      // second we will typecast byte to char
      char char1 = (char) num2;
      System.out.println("\nStep 2 - byte to char:");
      System.out.println("char1 (char) = " + (int) char1);
      
      // then we will typecast char to int
      int num3 = char1;
      System.out.println("\nStep 3 - char to int:");
      System.out.println("num3 (int) = " + num3);
      
      // then we will typecast int to short
      short num4 = (short) num3;
      System.out.println("\nStep 4 - int to short:");
      System.out.println("num4 (short) = " + num4);    
      
      // we do casting short to byte
      byte num5 = (byte) num4;
      System.out.println("\nStep 5 - short to byte:");
      System.out.println("num5 (byte) = " + num5);
      
      // Casting byte to long
      long num6 = (long) num5;
      System.out.println ("\nStep 6 - byte to long:");
      System.out.println ("num6 (long) = " + num6);
      
      // Casting long to double
      double num7 = (double) num6;
      System.out.println("\nStep 7 - long to double:");
      System.out.println("num7 (double) = " + num7);
   }
}

輸出

Step 1 - int to byte:
num1 (int) = -1
num2 (byte) = -1

Step 2 - byte to char:
char1 (char) = 65535

Step 3 - char to int:
num3 (int) = 65535

Step 4 - int to short:
num4 (short) = -1

Step 5 - short to byte:
num5 (byte) = -1

Step 6 - byte to long:
num6 (long) = -1

Step 7 - long to double:
num7 (double) = -1.0

首先,我們定義了一個名為 first 的類,並在該類中呼叫了 main() 函式。在 main() 函式中,我們必須將整數型別轉換為位元組型別。為此,我們分別聲明瞭兩個名為“num1”和“num2”的變數。“num1”是整數型別,“num2”是位元組型別變數。-1 分配給變數“num1”,在下一行我們對“num1”進行了型別轉換為位元組型別。

int num1 = -1;
byte num2 = (byte) num1;

然後我們簡單地列印了這個值。

System.out.println ("Step 1 - int to byte:");
System.out.println ("num1 (int) = " + num1);
System.out.println ("num2 (byte) = " + num2);

之後,我們對字元進行了型別轉換為整數。為此,我們聲明瞭一個名為“char1”的字元並將其型別轉換為位元組到字元。

char char1 = (char) num2;

然後我們簡單地列印了這個型別轉換的值。

System.out.println("\nStep 2 - byte to char:");
System.out.println("char1 (char) = " + (int) char1 ");

之後,我們對整數進行了型別轉換為短整型。為此,我們聲明瞭一個名為“num4”的整數並將其型別轉換為短整型。

short num4 = (short) num3;

然後我們簡單地列印了這個型別轉換的值。

System.out.println("\nStep 4 - int to short:");
System.out.println("num4 (short) = " + num4);

之後,我們對短整型進行了型別轉換為位元組。為此,我們聲明瞭一個名為“num5”的位元組並將其型別轉換為短整型到位元組。

byte num5 = (byte) num4;

然後我們簡單地列印了這個型別轉換的值。

System.out.println("\nStep 5 - short to byte:");
System.out.println("num5 (byte) = " + num5);

之後,我們對短整型進行了型別轉換為位元組。為此,我們聲明瞭一個名為“num5”的位元組並將其型別轉換為短整型到位元組。

byte num5 = (byte) num4;

然後我們簡單地列印了這個型別轉換的值。

System.out.println("\nStep 5 - short to byte:");
System.out.println("num5 (byte) = " + num5);

之後,我們對位元組進行了型別轉換為長整型。為此,我們聲明瞭一個名為“num6”的長整型並將其型別轉換為短整型到位元組。

long num6 = (long) num5;

然後我們簡單地列印了這個型別轉換的值。

System.out.println ("\nStep 6 - byte to long:");
System.out.println ("num6 (long) = " + num6);

之後,我們對長整型進行了型別轉換為雙精度浮點數。為此,我們聲明瞭一個名為“num6”的雙精度浮點數並將其型別轉換為長整型到雙精度浮點數。

double num7 = (double) num6;

然後我們簡單地列印了這個型別轉換的值。

System.out.println("\nStep 7 - long to double:");
System.out.println("num7 (double) = " + num7

然後我們在螢幕上獲得了結果輸出。

Java 中的物件多播

在此程式設計示例中,我們將看到 Java 中的物件多播。

示例

class Zoo
{
   void makeSound()
   {
      System.out.println("Some random noise");
   }
}
class Dog extends Zoo 
{
   void makeSound() 
   {
      System.out.println("Bark!!");
   }
}
class Cat extends Zoo
{
   void makeSound() 
   {
      System.out.println("Meow!!");
   }
}
class Tiger extends Zoo 
{
   void makeSound() 
   {
      System.out.println("Roar!!");
   }
}
public class MulticastPuzz
{
   public static void main(String args [])
   {
      // Object multicasting using superclass reference
      Zoo zoo1 = new Dog();
      Zoo zoo2 = new Cat();
      Zoo zoo3 = new Tiger();
      
      // by using polymorphism we access subclass methods 
      Dog dog = (Dog) zoo1;
      dog.makeSound();
      ((Cat) zoo2).makeSound();
      ((Tiger) zoo3).makeSound();
      
      // Object multicasting
      Zoo[] zoos = new Zoo[3];
      zoos[0] = new Dog();
      zoos[1] = new Cat();
      zoos[2] = new Tiger();
   }
}

輸出

Bark!!
Meow!!
Roar!!

為此,我們首先定義了一個名為 Zoo 的類,並在該類中呼叫了 makeSound() 函式。現在,一個名為 dog 的類擴充套件了 Zoo 類。在 dog 類中,我們透過繼承的屬性呼叫了 makeSound()。

class Dog extends Zoo 
{
   void makeSound() 
   {
      System.out.println("Bark!!");
   }

現在,一個名為 cat 的類擴充套件了 Zoo 類。在 dog 類中,我們透過繼承的屬性呼叫了 makeSound()

class Cat extends Zoo 
{
   void makeSound() 
   {
      System.out.println("Meow!!");
   }

現在,一個名為 tiger 的類擴充套件了 Zoo 類。在 tiger 類中,我們透過繼承的屬性呼叫了 makeSound()。

class Tiger extends Zoo 
{
   void makeSound() 
   {
      System.out.println("Roar!!”);
   }
}

現在,一個名為 tiger 的類擴充套件了 Zoo 類。在 tiger 類中,我們透過繼承的屬性呼叫了 makeSound()。

class Tiger extends Zoo 
{
   void makeSound() 
   {
      System.out.println("Roar!!”);
   }
}

現在,我們定義了一個名為 MultiCastPuzz 的類,並在該類中呼叫了 main() 函式。在 main() 函式中,我們使用超類引用進行了物件多播。

Zoo zoo1 = new Dog();
Zoo zoo2 = new Cat();
Zoo zoo3 = new Tiger();

之後 // 透過使用多型性,我們訪問子類方法。

dog.makeSound();
((Cat) zoo2).makeSound();
((Tiger) zoo3).makeSound();

最後,我們對物件進行了多播。

Zoo[] zoos = new Zoo[3];
zoos[0] = new Dog();
zoos[1] = new Cat();
zoos[2] = new Tiger();

結論

在本文中,我們學習了很多關於如何在 Java 中進行多播或多次型別轉換的知識。此過程有助於編碼人員減少其精力和程式碼編寫量。它是 Java 的一項獨特功能,使其與不支援此類機制的其他語言相比,成為一種更智慧的語言。

更新於: 2023年10月4日

234 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告