UPSTARTSのぱみやすです
今回はJavaの型の変換(キャスト)の方法をみていきます
まず、ある型で宣言された変数には、その型の値しか代入出来ません
例をみてみましょう
データの型が違う場合
「double型」で変数を初期化し、その変数を「int型」の変数に代入します
1 2 3 |
double d = 123.45; int x = d; System.out.println(x); |
こちらを実行するとエラーとなってしまいます
なぜかというと
「代入先の変数の型」と「代入する値の型」が一致しないため、エラーになってしまいます
データ型が同じ場合
もう一つ例を見てみましょう
「long型」で変数を初期化し、その変数を「int型」に変数を代入します
1 2 3 |
long l = 7777L; int y = l; System.out.println(y); |
こちらを実行すると「データの型が同じ整数型」なのにエラーとなってしまいます
同じ整数型でも「int型」には「long型」の変数を代入することができません
なぜかというと
「long型」の方が「int型」より、値が大きいためエラーになってしまいます
ですが「long型」に「int型」を代入することはできます
型の変換(キャスト)
先ほどの代入には「型を強制的に変換して代入する」方法があります
この方法を「キャスト」と言います
キャストの方法は
「double型の変数d」の値を代入をする前に「int型」に変えてあげます
1 |
int x = (int)d; |
「long型」も同じように値を代入をする前に「int型」に変えてあげます
1 |
int y = (int)l; |
書き方は型を変換したい変数の前に「(データの型)」を書くだけです
今回は「int型」に変換したいため、このように書いています
1 2 3 |
double d = 123.45; int x = (int)d; System.out.println(x); |
1 2 3 |
long l = 7777L; int y = (int)l; System.out.println(y); |
こちらを実行すると「変数 x」は「123」と表示され、「変数y」は「7777」と表示されます
「変数 x」が「123.45」と表示されず、「123」と表示される理由は下記をみてください
ではもう一つ例を見ていきましょ
「int型」で変数を宣言し、それを「3」で割って「double型」の「変数d」に代入します
1 2 3 4 |
int i; i = 10; double d = i / 3; System.out.println(d); |
こちらの実行すると「3.33333」と表示されるず「3」と表示されます
なぜかというと
「変数i」は整数型なので整数の演算になってしまい、あまりが切り捨てられて、「 3」が代入されてしまします
ちゃんと表示させたい場合は
代入をする前に、整数型の「変数i」を「double型」に変換してます
1 2 3 4 |
int i; i = 10; double d = (double)i / 3; System.out.println(d); |
実行するとちゃんと「3.33333」と、表示されます
まとめ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
package lesson; public class Main { //型の変換(キャスト) public static void main(String[] args) { double d = 123.45; int x = (int)d; System.out.println(x); long l = 7777L; int y = (int)l; System.out.println(y); int i; i = 10; double d = (double)i / 3; System.out.println(d); } } |
では次回は条件分岐のif文についてやっていきます