|=代入演算子の最初のオペランドの結果は変数でなければならない。なければ,コンパイル時エラーが発生する。このオペランドは,現在のオブジェクト又はクラスの局所変数又はフィールドの名前付けされた変数であってもよく,フィールドアクセス(15.11)又は配列アクセス(15.13)から生じ得るような計算された変数であってもよい。代入式の型はその変数の型とする。実行時には,その代入式の結果は代入が起こった後の変数の値とする。代入式の結果自身は,変数ではない。宣言された変数は,(それが未初期化最終変数(4.5.4)でない限り)代入できない。変数のアクセスが式として使用されるときに,その結果は値であり変数ではないので,代入演算子の最初のオペランドとして使用することはできない。=もし代入変換(5.2)によって,その右辺オペランドの型をその変数の型に変換できないならば,コンパイル時エラーが発生する。実行時には,式は次に述べる二つの方法の中の一つで評価する。その左辺オペランド式が配列アクセス式でないならば,次の三段階が要求される。最初に,変数を生成するために,その左辺オペランドが評価される。この評価が中途完了するならば,その代入式は同じ理由で中途完了する。したがって,その右辺オペランドは評価されず,代入は起こらない。なければ,その右辺オペランドが評価される。この評価が中途完了するならば,その代入式は同じ理由で中途完了し,代入は起こらない。なく)標準数値集合に数値集合変換(5.1.8)をおこなうために,その右辺オペランドの値をその左辺変数の型に変換し,及びその変換結果を変数に記憶する。その左辺オペランド式が配列アクセス式(15.13)であるならば,次の多くの段階を要求する。最初に,その左辺オペランドの配列アクセス式の配列参照副式が評価される。この評価が中途完了するならば,その代入式は同じ理由で中途完了する。(左辺オペランド配列アクセス式の)インデクス副式及び右辺オペランドは評価されず,代入は起こらない。なければ,その左辺オペランド配列アクセス式のインデクス副式を評価する。この評価が中途完了するならば,代入式は同じ理由で中途完了し,右辺オペランドを評価せず,代入は起こらない。なければ,その右辺オペランドを評価する。この評価が中途完了するならば,その代入式は同じ理由で中途完了し,代入は起こらない。なければ,配列参照副式の値は実際には配列を参照する。なければ,そのインデクス副式の値は,配列参照副式の値によって参照される配列の構成要素を選択するために使用される。コンパイル時に決定される代入演算子の左辺オペランドの型であると仮定する。のぞく)適切な標準数値集合への数値集合変換(5.1.8)のためにその選択された配列の構成要素の型に変換され,及びその変換の結果は選択した配列の構成要素に記憶される。同じではないかもしれず,TCを拡張又は実装した型かもしれない。実行時に右辺のオペランドの値を参照するオブジェクトのクラスであると仮定する。代入互換(5.2)であることを保証するために,検査がおこなわなければならない。15.16)に似ている。したがって,次のようになる。なければ,その右辺オペランドの参照値が,選択された配列の構成要素に記憶され。配列の構成要素への代入規則を,次のプログラム例で示す。Thread());}}このプログラムは,次のように表示する。ArrayIndexOutOfBoundsExceptionこの多くの中で最も興味深い場合は,最後から13番目とする。ある配列に記憶しようとして,ArrayStoreExceptionを投げたことを示す。そのコードは,コンパイル時には正しい型とする。インスタンスへの参照とする。除くすべての複合代入演算子は,両方のオペランドがプリミティブ型であることを要求される。あれば,その右辺オペランドはどの型でもよい。