マンガで分かる Java入門講座

第4章 数値変数と演算子
4-5. キャスト

型を別の型に変換する「キャスト」という処理について紹介します。

● キャスト

 数値を表す型では、ある型から別の型に値を代入することができます。その際には注意が必要です。

 まずは、エラーが出る処理を示します。

ソースコード)エラーが出る処理
short s = 1000;
byte b = s;  // ←エラーが出る

 これは、16bitのサイズのshortから、8bitのサイズのbyteに、値を代入しようとしているためです。大きなサイズの型から、小さなサイズの型に値を代入すると、値の一部が失われる可能性があるのでエラーが出ます。

 逆に、小さなサイズの型から、大きなサイズの型に値を代入するのは問題ありません。

ソースコード)エラーが出ない処理
byte b = 100;
short s = b;  // ←問題ない

 大きなサイズの型から、小さなサイズの型に値を代入する際は「キャスト」という処理を行います。このキャストは「(変換する型)値」と書くことで行えます。

ソースコード)キャスト
short s = 1000;
byte b = (byte)s;  // ←エラーにならない

 ただし、この場合は注意が必要です。値の一部が失われる可能性があります。上記の場合は、内部的に以下のような処理が行われます。

説明)キャストの内部処理
10進数の「1000」は 2進数(short,16bit)では 「0000 0011 1110 1000」
↓
byte は 8bit なので 末尾8bitだけコピーする「XXXX XXXX 1110 1000」
↓
「1110 1000」は byteでは「-24」

● 浮動小数点数のキャスト

 浮動小数点数のdouble(大きなサイズの型)からfloat(小さなサイズの型)に値を代入する際にもキャストが必要になります。この場合は64bitから32biteへの代入なので精度が落ちます。

ソースコード)浮動小数点数のキャスト
double d = 1.0/3;
System.out.println(d);  // 「0.3333333333333333」と出力

float f = (float)d;
System.out.println(f);  // 「0.33333334」と出力

● 浮動小数点数から整数型へのキャスト

 浮動小数点数から整数型へのキャストも行えます。その際は、小数点以下が切り捨てられます。

ソースコード)浮動小数点数から整数型へのキャスト
float f = 3.1415f;
int i = (int)f;  // 変数iには3が入る
System.out.println(i);  // 「3」と出力

この講座のマンガ部分は「箱人形マンガ(Box Comic) 」で作成しています。
作成:2013/05/20  更新:2015/08/08  [Permalink]

クロクロ・ショップ
特殊な技術書多数あります
レトロ風RPG フルスクラッチ開発 全コード
レトロゲーム風RPGの全コードを掲載して解説した本
HTML5とJavaScriptで作る 落ち物パズルゲーム 全コード
『テトリス』や『ぷよぷよ』に類似した落ち物パズルゲームの全コードを掲載して解説した本
JavaScriptでリバーシゲームをつくろう
ライブラリを使わずに全コードを書いて、リバーシゲームを作るまでを徹底解説
ワールドマップ自動生成読本
二次元ゲームのワールドマップを自動生成するための本
レトロゲームファクトリー
過去のゲームを最新機に移植する会社のお仕事小説(新潮社)
顔貌売人 ハッカー探偵 鹿敷堂桂馬
プログラマーが探偵役のエンタメ・ミステリー第2弾 最先端の情報犯罪に安藤と鹿敷堂が挑みます(文藝春秋)
裏切りのプログラム ハッカー探偵 鹿敷堂桂馬
プログラマー鹿敷堂桂馬が、女性社長の安藤裕美と共に、IT業界で起きた事件に挑む。2016年の松本清張賞の最終候補作(文藝春秋)
×