在Java中,加宽转换(隐式)和缩小转换(显式)之间有什么区别?

Java中的类型转换用于将一种类型的对象或变量转换为另一种类型。当我们将一种数据类型转换或分配给另一种数据类型时,它们可能不兼容。如果合适的话,它将顺利进行,否则会丢失数据。

Java中的类型转换类型

Java类型转换分为两种类型。

  • 加宽转换(隐式)–自动类型转换

  • 缩小转换(显式)–需要显式转换

加宽铸件(从小到大)

加宽Ť YPE转换如果两个类型兼容和目标类型比源类型较大可能发生。当两种类型兼容并且目标类型大于源类型时,会进行扩展转换。

例1

public class ImplicitCastingExample {

   public static void main(String args[]) {

      byte i = 40;

      //低于转化率无需投放

      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

类类型的拓宽转换

在下面的示例中,Child 类是较小的类型,我们将其分配给Parent 类类型,后者是较大的类型,因此不需要强制转换。

例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;

      //下面的转换需要显式转换

      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

以上是 在Java中,加宽转换(隐式)和缩小转换(显式)之间有什么区别? 的全部内容, 来源链接: utcz.com/z/326693.html

回到顶部