Javaのお勉強その7
- 型変換
大きな型へは自動的に変換される。型の大小関係はdouble>float>long>int>short,char>byteになる。
型が小さくなる方向への型変換は自動的に行われない。ただし、byte、char、shortの変数にint型のリテラルや定数を代入する場合、値が型の扱える値の範囲内であれば、縮小変換が行われる。
足し算や掛け算を行うと、拡大変換が適用される。例えば、double型+int型の結果はdouble型に変換される。byte、char、shortの演算は計算結果がintになる。
暗黙的に型変換ができなくても、キャストにより型変換ができることがある。
参照型の暗黙的な型変換はサブクラスからスーパークラスへの場合、自動的に行われる。
参照型から基本データ型へのキャストは不可能。
int i=40000; short s = (short)i;
はコンパイルできるが、shortが扱える範囲を超えた値なので、情報が失われる。iを2進数表示したうち、下位16ビットがsに入り、その結果が表示されることになる。
参照型データではスーパークラスからサブクラスにキャストすることが可能である。また、サブクラスからスーパークラスへは代入時、暗黙的に変換が行われる。
スーパークラスからサブクラスへのキャストが許されるのは、スーパークラスの変数がサブクラスのオブジェクトを指しているかもしれないからである。ただし、スーパークラス変数の指すものが実際にスーパークラスのオブジェクトであった場合、サブクラスのオブジェクトとして利用できないので、ClassCastExceptionが投げられる。
0 件のコメント:
コメントを投稿