}}abstract抽象クラスまたは実装のないメソッドに付けられる修飾子である。finalと併用することはできない。Javaでは、実装されないメソッドがあるクラスを作成することができる。抽象クラスのインスタンスを作成することはできない。以下の点においてインタフェースと異なる。そのままではインスタンス化できず、不足しているメソッドを実装した派生クラスを用意して使用する。Interfaceを参照)。synchronizedメソッドの宣言や特定のブロックに付けられ、排他制御を指示する。同一オブジェクトが複数のオブジェクトから参照され、異なるスレッドで同時に処理を行っている場合でも、この修飾子があるブロックでは処理を行えるスレッドはただ1つしか存在しない。...}volatileフィールドの宣言に付けられ、キャッシュを見に行かずに常に最新の値を見に行くようになる。マルチスレッド下における軽量かつ限定的な同期処理に使われる[3]。...}transientフィールドの宣言につけられる。対象フィールドがシリアライズの対象にならないことを指示する。スレッドオブジェクトなど、保存できないフィールドや保存されると不都合なフィールドに対して使用される。例外処理[編集]例外処理はC言語にはない。C++およびC#では、Javaとほぼ共通の構文およびキーワードが使用されている。finallyはC++には存在せず、throwsはC#には存在しない。finally例外が発生しうる箇所で使用する。例外発生後の処理を書く。ファイルのクローズ、データベースセッションの切断、ログアウトなど、例外発生の有無にかかわらずtry/catchブロック内の処理を終了する前に必ず実行しておきたいコードを書く。catchを記述した場合finallyは省略可能であり、finallyを記述した場合catchは省略可能である。try/catchブロックとfinallyブロックの両方にreturn文がある場合、後者が優先される。catchブロックにはif-else-if文のように連続して捕捉したい例外を記述することができる。例外記述順序は最初に具象例外クラスを記述し、徐々に抽象化してゆき、最後にExceptionクラスを記述するようにすべきである。先に抽象的な例外クラスを記述すると、その下位クラスもそこで捕捉されてしまうからである。throw例外を発生させる。throwsメソッドの宣言で使用される。そのメソッドがどのような例外をスローするかを列挙する。明示が必要な例外と記述を省略可能な例外がある。前者は主にファイルエラーなどプログラムの動作中にその都度対応すべき例外で、後者は主に開発・デバッグの段階で対処すべき例外あるいは深刻なエラーである。以下はIOExceptionを使った記述例である。このtryブロックにはreturn文を記述することもできる。finallyブロックにすでにreturn文があるときは、ここにreturn文を書いてもfinallyブロックのreturnが優先される。このcatchブロックにはreturn文を記述することもできる。finallyブロックにすでにreturn文があるときは、ここにreturn文を書いてもfinallyブロックのreturnが優先される。例外をさらに外のブロックにスローする。どの場合でもこのブロックは必ず実行される。ここにreturn文があるときはtry/catchブロックにreturn文があろうともこちらのreturn文が優先される。5.0でenumが追加された。withが追加された[4]。9では単一のアンダースコア_が予約済みのキーワードとなり、識別子として使用できなくなった。よって実現されている[5]。その他[編集]浮動小数点演算[編集]その他のキーワードとして、浮動小数点演算の移植性を高めるstrictfpがある。754を前提として予想される結果から外れることが問題である。いう用語を使っている[6])。VMの実装で、これを正しく実現するには、x86系CPUを使った計算機の場合、x87を避けてSSE2で計算するか、それができない場合は特殊なテクニック[7]が必要である。同様に移植性のある結果を保証するStrictMathというクラスがあるが、そちらはFDLIBMというSun製のライブラリと同じ結果を保証するとされている。未使用[編集]const、gotoがキーワードとして予約されているが、Javaでは使用できない。使用するとコンパイル時に構文エラーになる。wordではなくkeywordと呼んでいる。