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
-
JavaのJFrameとJDialogの違いは何ですか?
JFrame フレームに追加されたコンポーネントはそのコンテンツと呼ばれ、 contentPaneによって管理されます。 。 JFrameにコンポーネントを追加するには 、 contentPaneを使用する必要があります 代わりに。 JFrame タイトルのウィンドウが含まれています 、境界線 、(オプション)メニュー バー およびユーザー -指定 コンポーネント 。 JFrame 移動できます 、サイズ変更 、アイコン化 JComponentのサブクラスではありません 。 デフォルトでは、JFrameは左上の角に表示されます 画面のr。指定した場所にフレームを表示するには
-
JavaのGridLayoutとGridBagLayoutの違いは何ですか?
GridLayout すべてのコンポーネントを長方形のグリッドに配置し、同じサイズの長方形に分割します 各コンポーネントは長方形の中に配置されますが、 GridBagLayout 柔軟です レイアウト マネージャー コンポーネントを垂直方向と水平方向に整列させます コンポーネントが同じサイズである必要はありません。各GridBagLayout オブジェクトは、動的な長方形のセルのグリッドを維持します 各コンポーネントがコンポーネントと呼ばれる1つ以上のセルを占有します 表示 エリア 。 GridLayout GridLayout コンポーネントを長方形のグリッドに配置します。セル