スポンサードリンク

【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>javac Lesson014.java

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>javac Lesson015.java

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;

ここでは確認はしませんが、実際にそうなるかを確認してみてください。

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント