キャストの勉強をしている時に小さい型から大きい型へは暗黙的に型を変えてくれる、大きい型から小さい型へは明示的に型を変えると書かれていました。
その時に大きいとか小さいとかわかりやすくまとめたいなと思いまとめます。
クラスなどが絡むアップキャストやダウンキャストは除いています。
■ 関連記事
基本的な型のサイズ順
小さい方から大きい方へは暗黙的キャストが可能。※ char除く
byte -> short -> char -> int -> long -> float -> double
大きい方から小さい方へは明示的キャスト。
double -> float -> long -> int -> char -> short -> byte
暗黙的キャスト (Widening Casting )
キャストの書き方の例です。
サイズの順番は上記になりますが、charはマイナス、byte型とshort型を扱えないため明示的にキャスト必要があるようです。
サンプルコード
byte b1 = 1;
short s1 = 71;
char c1 = 3;
int i1 = 4;
long l1 = 5L;
float f1 = 6.5F;
double d1 =7.3;
// byte b2 = s1 ; //エラー
short s2 = b1;
char c2 = (char) s1; //明示的キャスト
int i2 = c1;
long l2 = i1;
float f2 = l1;
double d2 = f1;
System.out.println(s2); // 1
System.out.println(c2); //G
System.out.println(i2); // 3
System.out.println(l2); // 4
System.out.println(f2); // 5.0
System.out.println(d2); //6.5
明示的キャスト (Narrowing Casting)
キャストの書き方の例です。
サンプルコード
double d1 =7.3;
float f1 = 6.5F;
long l1 = 5L;
int i1 = 73;
char c1 = 3;
short s1 = 2;
byte b1 = 1;
double d2 = (double)c1;
float f2 = (float)d1;
long l2 = (long)f1;
int i2 = (int)l1;
char c2 = (char) i1;
short s2 = (short)c1;
byte b2 = (byte)s1 ;
System.out.println(d2); // 3.0
System.out.println(f2); // 7.3
System.out.println(l2); // 6
System.out.println(i2); // 5
System.out.println(c2); // I
System.out.println(s2); // 3
System.out.println(b2); //2
参考サイト:https://www.w3schools.com/java/java_type_casting.asp