【Java】明示的な型変換(キャスト)
byte型変数にint型変数を代入する(その逆も)でbyte型の変数にint型の変数を代入しようとしたら、コンパイルエラーが起きることを確認しました。
それは、小さい箱に大きい箱をねじ込めないのと同じように、小さいデータ型に大きいデータ型は入れられないからです。
しかし明示的に型変換(キャスト)をしてあげれば、(条件があえば)自由自在に異なるデータ型の変数に値を代入できるようになります。
1.byte型の変数にint型の変数値を代入
明示的な型変換を行い、byte型の変数にint型の変数値を代入してみたいと思います。
「Lesson014.java」というファイルを作成し、以下のJavaプログラムを入力・保存してください。
public class Lesson014{ public static void main(String args[]){ //byte型変数「x」とint型変数「y」を宣言 byte x = 0; int y = 5; //xにyを代入 x = (byte)y; //変数xを出力 System.out.println(x); } }
そして以下のように「javac Lesson014.java」でコンパイルし、「java Lesson014」で実行してください。
C:\Users\ysk\Desktop\java>java Lesson014
5
すると、今度はコンパイルエラーが起きることなく、int型変数「y」の値をbyte型変数「x」に代入できることがわかります。
2.int型同士の割り算結果をdouble型の変数に代入
int型同士の変数を割り算し、その結果をdouble型の変数に代入してみたいと思います。
では「Lesson015.java」というファイルを作成し、以下のJavaプログラムを入力・保存してください。
public class Lesson015{ public static void main(String args[]){ //int型変数「x」と「y」、double型変数「z」を作成 int x = 3; int y = 2; double z; //x÷yの結果をzに代入 z = x/y; //変数zを出力 System.out.println(z); } }
そして以下のように「javac Lesson015.java」でコンパイルし、「java Lesson015」で実行してください。
C:\Users\ysk\Desktop\java>java Lesson015
1.0
すると、double型の変数「z」には「1.0」という数値が代入されることがわかります。
この理由は、まず「3÷2=1.5」という演算結果が出ますが、変数「x」と「y」は両方とも整数を扱うint型なので、次の瞬間少数部分が切り捨てられ「1」となります。そしてそれが変数「z」に代入されますが、変数「z」はdouble型なので「1.0」となります。
では、上記のプログラムで変数「z」に「1.5」を代入するにはどうすればよいでしょうか?
それは、以下のようにint型の演算自体を「double」で明示的に型変換(キャスト)することで可能になります。
z = (double)x/y;
ここでは確認はしませんが、実際にそうなるかを確認してみてください。
コメント
まだコメントはありません。