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 次查看

开启您的 职业生涯

通过完成课程获得认证

开始
广告