こんにちは!ISAMU(@burlesca_isa)です!
今回の対象読者は
- javaの型変換について知りたい方
型変換とは
変数に指定したデータ型を変更したい時に必要なのが型変換の知識です。
型変換を覚えていないと、
計算結果が合わないなどの問題が発生することがあります。
基本データ型の型変換のルールについて
基本データ型には2種類の型変換のルールがあります。
- 暗黙型
- キャスト
前提知識として必要なのがデータ型についてです。
変数宣言などでデータ型を指定すると、データ型によって変数が確保するメモリの容量が決まります。
基本データ型の暗黙型
宣言した時のデータ型とは違うデータ型の値や変数を代入した時に変換されます。
例えばbyte型の値をint型の変数に代入するとbyte型がint型に変換されます。
暗黙型の代入ルール
メモリの使用量が少ないデータ型から大きいデータ型に代入することが可能です。
この図の矢印で逆で代入することはできません。
例えばlong型をint型に代入することはできません。
その他注意すること
①片方のオペランドが小数点の場合は小数点のデータ型が優先されます。
例えば、一方のオペランドがdouble型である場合、他方のオペランドはdouble型に変換されます。
②その他、byte、short、int、longでオペランドのデータ型が違う場合、
メモリ使用量が大きいデータ型に変換されます。
例えばint型とlong型の計算では計算結果はlong型になります。
③オペランドがlong型、もしくは小数点を使用しない場合は
演算前にint型に変換されます。
サンプルプログラム
参照型の型変換
参照型の型変換は2種類のルールがあります。
- 暗黙型
- キャスト
基本的にはサブクラスとスーパークラスの型変換と
実装クラスからインターフェースへの型変換を行います。
暗黙型
スーパークラスの型で宣言された変数にサブクラスのインスタンスを代入することができます。
継承関係であることが重要です。
暗黙型での型変換は主にポリモーフィズムを実現したい場合に使用します。
ポリモーフィズムに関する記事はこちら。
[nlink url=”https://kajirinyo.com/java_course_22/”]キャスト
暗黙型でスーパークラスに代入されたサブクラスのインスタンスを元のクラスに戻す際に使用します。
スーパークラスに代入されたサブクラスのインスタンスは
スーパークラスのメソッドしか使用できません。
スーパークラスに代入後、サブクラスのメソッドを使用したい場合にキャストすることがあります。
継承関係にない場合はClassCastExceptionというエラーが発生します。
サンプルプログラム
実行結果
- Superクラス : スーパークラスで宣言
- Subクラス : スーパークラスで宣言
と表示されます。