4.6);実行時に,その式は二つの方法の中の一つで評価される。その左辺オペランド式が配列アクセス式でないならば,次の四つの段階が要求される。最初に,変数を生成するために,その左辺オペランドが評価される。この評価が中途完了するならば,その代入式は同じ理由で中途完了する。その右辺オペランドは評価されず,代入は起こらない。なければ,その左辺オペランドの値が保存され,その右辺オペランドが評価される。この評価が中途完了するならば,その代入式は同じ理由で中途完了し,代入は起こらない。なければ,その左辺変数の保存された値及びその右辺オペランドの値が,複合代入演算子によって示される二項演算を実行するために使用される。この演算が突然に中途完了すれば(唯一の可能性はゼロによる整数除算,15.17.2参照),代入式は同じ理由で中途完了し,代入は起こらない。ない)に数値集合変換(5.1.8)するために,その二項演算の結果がその左辺変数の型に変換され,その変換結果が変数に記憶される。その左辺オペランド式が配列アクセス式(15.13)であるならば,次の多くの段階を要求する。最初に,その左辺オペランドの配列アクセス式の配列参照副式が評価される。この評価が中途完了すれば,その代入式は同じ理由で中途完了する。(左辺オペランド配列アクセス式の)インデクス副式及び右辺オペランドは評価されず,代入は起こらない。なければ,その左辺オペランドの配列アクセス式のインデクス副式を評価する。この評価が中途完了するならば,その代入式は同じ理由で中途完了し,その右辺オペランドは評価されず,代入は起こらない。なければ,その配列参照副式の値は実際には配列を参照する。なければ,そのインデクス副式の値は,配列参照副式の値によって参照される配列の構成要素を選択するために使用される。この構成要素の値は保存され,次にその右辺オペランドが評価される。(単純代入演算子では,その右辺オペランドの評価は,その配列参照副式及びインデクス副式の検査の前に行われるが,複合代入演算子では,その右辺オペランドの評価は,これらの検査の後に行われる。なければ,その値を保存する前の段階で選択された配列の構成要素を考える。コンパイル時に決定されるその代入演算子の左辺オペランドの型であると仮定する。その配列の構成要素の保存された値及びその右辺オペランドの値が,複合代入演算子により示された二項演算を実行するのに使用される。この演算が中途完了するならば(唯一の可能性はゼロによる整数除算,15.17.2参照),その代入式は同じ理由で中途完了し,代入は起こらない。ない)への数値集合変換(5.1.8)をおこなうために,その二項演算の結果は選択された配列の構成要素の型に変換され,その変換の結果は配列の構成要素に記憶される。Tが参照型であるならば,それはStringでなければならない。したがって,単純代入演算子では時々必要になる実行時検査は,複合代入演算子に対しては決して要求されない。配列の構成要素の保存し値及び右辺オペランドの値を複合代入演算子(必然的に+=)により示される二項演算(文字列連結)を実行するために使用する。この演算が中途完了するならば,代入式は同じ理由で中途完了し,代入は起こらない。結果を,その配列の構成要素に記憶する。配列の構成要素への複合代入の規則を,次のプログラム例で示す。9);}}このプログラムは,次のように表示する。ArrayIndexOutOfBoundsExceptionこの多くの中で最も興味深い場合は,最後から11番目及び12番目とする。RightHandSideThrowこれらは,例外を投げることができる右辺が実際に例外を投げた場合で,さらに多くの中で唯一の場合とする。これは,本当に,空配列参照値及び領域外インデクス値の検査後に,その右辺オペランドの評価が起こることを示している。次のプログラムは,右辺を評価する前に複合代入の左辺の値が保存される事実を示す。a[0]);}}このプログラムは,次のように表示する。