Object又はString以外の任意のクラス型への任意の配列型からの変換は許さない。任意の配列型から任意のインタフェース型への変換は,すべての配列によって実装されるインタフェース型java.io.SerializableとCloneableへの変換を除いて許さない。[]への変換は許さない。その型を変更せずに,ある値集合から別の値集合に浮動小数点式値を写像する処理とする。FP厳密(FP-strict)(15.4)でない式中では,値集合変換はJavaプログラム言語の実装に選択肢をもたせる。要素である場合,実装はその値を単精度数値集合の中の最も近い要素にオプションとして写像してもよい。この変換は,オーバフロー(この場合,値は同じ符号の無限大と置き換えられる)又はアンダフロー(この場合,値は非正規化された数か同じ符号の0と置き換えられるので,正確でないかもしれない)するかもしれない。要素である場合,実装はその値を倍精度数値集合の中の最も近い要素にオプションとして写像してもよい。この変換は,オーバフロー(この場合,値は同じ符号の無限大と置き換えられる)又はアンダフロー(この場合,値は非正規化された数か同じ符号の0と置き換えられるので,正確でないかもしれない)するかもしれない。FP厳密式(15.4)中では,値集合変換の選択肢は無い。すべての実装は,同一の動作をしなければならない。値が型floatで,単精度数値集合の要素でない場合,実装はその値を単精度数値集合の中の最も近い要素に写像しなければならない。この変換は,オーバフロー又はアンダフローするかもしれない。値が型doubleで,倍精度数値集合の要素でない場合,実装はその値を倍精度数値集合の中の最も近い要素に写像しなければならない。この変換は,オーバフロー又はアンダフローするかもしれない。値の写像が必要である。FP厳密なコードである無いにかかわらず,値集合変換は常にfloat又はdouble以外の型の値を変えない。式の値を変数に代入する(15.26)ときに発生する。式の型は変数の型に変換しなければならない。代入文脈では,恒等変換(5.1.1),プリミティブ型の拡大変換(5.1.2)又は参照型の拡大変換(5.1.4)の使用が許される。次の条件をすべて満足すれば,プリミティブ型の縮小変換を使用してもよい。式が型byte,short,char又は,intの定数式。変数の型が,byte,short又はchar。式の値(定数式なのでコンパイル時にわかる)が,その変数の型で表現可能。式の型が,代入文脈で許される変換によって変数の型へ変換できなければ,コンパイル時エラーが発生する。変数の型がfloat又はdoubleの場合,値集合変換は型変換の後に適用される。要素の場合,実装は単精度数値集合の中で最も近い要素に値を写像しなければならない。この変換は,オーバフロー又はアンダフローするかもしれない。要素の場合,実装は倍精度数値集合の中で最も近い要素に値を写像しなければならない。この変換は,オーバフロー又はアンダフローするかもしれない。代入変換は,例外を発生しない。(しかし,配列の要素を含む特別な場合には,代入が例外を生じることがあるので注意すること。10.10及び15.26.1を参照のこと。)コンパイル時の定数の縮小とは,次のようなコードを許すことを意味する。42;縮小がなければ,整数リテラル42は型intをもつという事実は,byteへのキャストを要求することになる。requiredプリミティブ型の値は,参照型の変数に代入してはならない。これを実行しようとすると,コンパイル時エラーを生じる。型booleanの値は,型booleanの変数にのみ代入できる。次のテストプログラムは,プリミティブ型の値の代入変換に関する例を含む。d);}}このプログラムは,次の出力を生成する。f=12.0l=0x123d=1.2300000190734863しかし,次のテストプログラムは,コンパイル時エラーとなる。cast}}その理由は,すべてのshort値がchar値ではないし,すべてのchar値がshort値でもないからとする。空型の値(空参照が唯一その値)は,あらゆる参照型に代入可能で,その結果は,その型の空参照とする。参照の代入を例示する例題を次に示す。T(代入先)への代入は,次のとおり検査する。下位クラスでなければならない。ないときには,コンパイル時エラーが発生する。実装しなければならない。ないときには,コンパイル時エラーが発生する。配列型ならば,コンパイル時エラーが発生する。インタフェース型の場合。Objectでなければならない。ないときには,コンパイル時エラーが発生する。上位インタフェースでなければならない。ないときには,コンパイル時エラーが発生する。配列型ならば,コンパイル時エラーが発生する。構成要素をもつ配列の場合。Objectでなければならない。ないときには,コンパイル時エラーが発生する。型java.io.Serializable又は,型Cloneableでないとき,つまり配列型で実装される唯一のインタフェースでないときには,コンパイル時エラーが発生する。配列ならば,次の一つが真でないときには,コンパイル時エラーが発生する。