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 的一项独特功能,使其与不支持此类机制的其他语言相比,成为一种更智能的语言。