ないときには,次の二つのいずれかが真でなければならない。値が小さすぎる(膨大な負の値又は負の無限大)。第一段階の結果は,型int又は型longの最小表現可能値とする。値が大きすぎる(膨大な正の値又は正の無限大)。第一段階の結果は,型int又は型longの最大表現可能値とする。第二段階は,次のとおりとする。int又はlongならば,変換の結果は,第一段階の結果とする。縮小変換(5.1.3)の結果とする。(byte)fmax);}}これは,次を出力する。0..-1char,int及びlongに対する結果は,その型の最小及び最大表現可能値を生成する。byte及びshortに対する結果は,符号及び数値の大きさに関する情報を失い,精度も失う。この結果は,intの最小数及び最大数の下位ビットを調べることにより理解できる。最小のintは16進で0x80000000であって,最大のintは0x7fffffffである。これから,shortの結果が値の下位16ビット,つまり0x0000及び0xffffとなることが説明される。charの結果もまた,これらの値の下位16ビット,つまり'\u0000'及び'\uffff'となることで説明される。byteの結果が,これらの値の下位8ビット,つまり0x00及び0xffとなることで説明される。オーバフロー,アンダフロー又はその他の情報の損失が生ずる可能性があるという事実にもかかわらず,プリミティブ型間の縮小変換は,実行時例外(11.)を生じない。情報を損失する多くの縮小変換を例示する,小さなテストプログラムを次に示す。(float)1e-50);}}このテストプログラムは次の出力を生成する。変換(重要な特別の場合として,任意の型からクラス型Objectへの拡大変換が存在する)。空型から任意のクラス型,インタフェース型又は配列型への変換。任意のインタフェース型から型Objectへの変換。任意の配列型から型Objectへの変換。任意の配列型から型Cloneableへの変換。任意の配列型から型java.io.Serializableへの変換。これらの変換は,実行時に特別な動作を要求せず,従って実行時に例外を投げない。これは,参照が他の型をもつことはコンパイル時に検証できるので成立する。クラスの詳細な規定については8.を,インタフェースについては9.を,配列については10.を参照のこと。