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 的一項獨特功能,使其與不支援此類機制的其他語言相比,成為一種更智慧的語言。