Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaでのワイドキャスティング(暗黙的)とナローイングキャスティング(明示的)の違いは何ですか?


型キャスト Javaでは、あるタイプのオブジェクトまたは変数を別のタイプに変換するために使用されます。あるデータ型を別のデータ型に変換または割り当てる場合、互換性がない可能性があります。適切であれば、スムーズに動作します。そうでない場合は、データが失われる可能性があります。

Javaでの型キャスト型

Java型キャストは2つのタイプに分類されます。

  • ワイドキャスティング(暗黙的 )–自動型変換
  • キャスティングの絞り込み(明示的 )–明示的な変換が必要

ワイドキャスティング(小さいタイプから大きいタイプ)

拡大 T タイプ変換 両方のタイプに互換性があり、ターゲットタイプがソースタイプよりも大きい場合に発生する可能性があります。拡大鋳造は、2つのタイプが互換性がある場合に行われます。 ターゲットタイプがソースタイプよりも大きい

例1

public class ImplicitCastingExample {
   public static void main(String args[]) {
      byte i = 40;
      // No casting needed for below conversion
      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

クラスタイプのワイドキャスティング

以下の例では、 クラスは、に割り当てる小さいタイプです。 より大きなタイプであるため、キャストは不要なクラスタイプ。

例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;
      // Explicit casting is needed for below conversion
      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

  1. JavaのJFrameとJDialogの違いは何ですか?

    JFrame フレームに追加されたコンポーネントはそのコンテンツと呼ばれ、 contentPaneによって管理されます。 。 JFrameにコンポーネントを追加するには 、 contentPaneを使用する必要があります 代わりに。 JFrame タイトルのウィンドウが含まれています 、境界線 、(オプション)メニュー バー およびユーザー -指定 コンポーネント 。 JFrame 移動できます 、サイズ変更 、アイコン化 JComponentのサブクラスではありません 。 デフォルトでは、JFrameは左上の角に表示されます 画面のr。指定した場所にフレームを表示するには

  2. JavaのGridLayoutとGridBagLayoutの違いは何ですか?

    GridLayout すべてのコンポーネントを長方形のグリッドに配置し、同じサイズの長方形に分割します 各コンポーネントは長方形の中に配置されますが、 GridBagLayout 柔軟です レイアウト マネージャー コンポーネントを垂直方向と水平方向に整列させます コンポーネントが同じサイズである必要はありません。各GridBagLayout オブジェクトは、動的な長方形のセルのグリッドを維持します 各コンポーネントがコンポーネントと呼ばれる1つ以上のセルを占有します 表示 エリア 。 GridLayout GridLayout コンポーネントを長方形のグリッドに配置します。セル