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 コンポーネントを長方形のグリッドに配置します。セル