【Java】【No.2】Javaの基礎"型変換"について | yoppyのandroidアプリ開発者になるためのブログ

yoppyのandroidアプリ開発者になるためのブログ

このブログでは、ソフト開発部に所属していながらもソフト開発の経験がほぼゼロのペーペーが、Javaの勉強やアプリ開発を経て、android携帯電話のアプリ開発者のプロを目指す共同学習型のブログです。androidやJavaなど、プログラミングに興味のある方はぜひ見て下さいね!

ただいま、東広島市西条のカフェ「エクラン」ってとこでJavaのお勉強をしてます。カフェで勉強って、家で勉強するよりだいぶはかどります。で、今回は勉強中の本「独習Java」の第1章の続きについて、大事だと思うことを備忘録として残しておきます。

今回は、型変換について。

"型拡張"とは、型が異なるもの同士で演算(+や*など)を行うときに、大きい方の型に自動的に置き換える処理のことです。double型とint型の2つを足し算すると、結果はdouble型になる、ということです。

"拡張変換"とは、大きい方の型に、小さい方の型を代入したときに起きる処理です。例えば、8bitのbyte型変数を、32bitのint型変数に代入するときに拡張変換されます。逆に、int型変数をbyte型変数に代入しようとすると、コンパイル時にエラーが発生します。なぜなら、byte型の方が持てる情報量が少ないからです。この問題を解決するには、"縮小変換"を行います。以下のように行います。

byte b;
int i = 258;
b = i;
System.out.println(b);

↑これだと、byte型変数bの方が持てる情報量が少ないため、エラーが発生します。

byte b;
int i = 258;
b = (byte)i; ← ★ココ!
System.out.println(b);

↑★の箇所が、"縮小変換"です。int型変数の情報をbyte型変数分に置き換えます。よって、出力結果は、258ではなく、"2"です。2進数で表現すると、int型変数 i は、"1 0000 0010"であり、byte型変数はその下位8bitだけを代入されるため、"0000 0010"の情報だけとなり、"2"を表示します。

型変換については以上です。ソフト開発の実経験においても、丸め誤差の問題でタッチパネルの右端が効かなくなる、っていう不具合が出たりするので、この辺の型変換についてはしっかりと把握しておく必要があるわけです。