基本型の型変換 
| データ型 | 変換可能なデータ型 |
|---|
| boolean | |
| char | int, long, float, double |
| byte | short, int, long, float, double |
| short | int, long, float, double |
| int | long, float, double |
| long | float, double |
| float | double |
| double | |
参照型の型変換 - 実行時 
| 変換元 | 変換先 | ルール |
|---|
| クラス型 | クラス型 | 変換先のクラスが、変換元のスーパークラスであること |
| インタフェイス型 | 変換元のクラスは、変換先のインタフェイスを実装していること |
| 配列型 | |
| インタフェイス型 | クラス型 | 変換先がObject型であること |
| インタフェイス型 | 変換先のインタフェイスが、変換元のスーパーインタフェイスであること |
| 配列型 | |
| クラス型 | クラス型 | 変換先がObject型であること |
| インタフェイス型 | 変換先がCloneable、Serializableインタフェイスであること |
| 配列型 | 配列要素のデータ型に準じる |
参照型の型変換 - コンパイル時 
| 変換元 | 変換先 | ルール |
|---|
| クラス型 | クラス型 | 変換元、先が継承関係であること |
| インタフェイス型 | すべてok |
| 配列型 | 参照型の配列であること |
| インタフェイス型 | クラス型 | すべてok |
| インタフェイス型 | すべてok |
| 配列型 | |
| クラス型 | クラス型 | 変換先がObject型クラスであること |
| インタフェイス型 | |
| 配列型 | 配列要素のデータ型に準じる |