変数の明示的なキャスト

前回は、変数が自動で型変換される様子を説明しました。変数の型変換(キャストといいます)は、プログラマが明示的に行うこともできます。今回は明示的な型変換の方法を説明します。

変数の明示的なキャスト 目次

  1. 変数を明示的にキャストする
  2. 色々なキャストの書き方
  3. キャストできない型

1.変数を明示的にキャストする

自動的にキャストされる場合は、値を代入するだけでしたが、明示的にキャストする場合は変換先の型名を指定します。次の様に書きます。

(変換先の型)キャストする対象の値や変数

package pac01;

public class HelloWorld {
	public static void main(String[] args) {
		int intHensu1;
						
		intHensu1 = (int)1.2;
		
		System.out.println(intHensu1);
	}
}
-----------------------------------------------------------------
1

double型をint型にキャスト

1.2というdouble型の値を、int型の変数にそのまま代入しようとした場合、小数点以下が欠落してしまう為、自動型変換ではエラーとなります。但し、小数点以下は無くても構わない場合もありますので、その時は上記のようにint型へのキャストを明示することで、可能になります。

2.色々なキャストの書き方

この明示的なキャストは、色々な書き方ができます。上で書いたのは変数に値を代入する際でしたが、他にも変数の初期化時や、計算式に対してもキャストすることができます。

package pac01;

public class HelloWorld {
	public static void main(String[] args) {
		int intHensu1 = (int)1.2;	// 変数の初期化時にキャスト
		
		System.out.println(intHensu1);
		
		intHensu1 = (int)(5 * 1.1);	// 計算結果5 × 1.1 = 5.5 をキャスト
		
		System.out.println(intHensu1);
	}
}
-----------------------------------------------------------------
1
5

様々なキャスト

3.キャストできない型

boolean型は、どの型にもキャストすることはできません。また、String型からchar型へのキャストは一見できそうに思いますが、これもNGです。

package pac01;

public class HelloWorld {
	public static void main(String[] args) {
		int intHensu1 = (int)false;
		boolean blnHensu2 = false;
		
		intHensu1 = (int)blnHensu2;

		String strHensu3 = "123";
		char chrHensu4;
		
		chrHrnsu4 = (char)strHensu3;
		
	}
}

キャストNGな例

コメントを残す

サブコンテンツ

このページの先頭へ