Javaの文法
配列自体はオブジェクト型Objectのサブクラスつまり参照型である。
プリミティブ型の配列、オブジェクト型の配列、さらにそれらの配列の配列(ジャグ配列)、などの配列を扱える。
プリミティブ型の配列では、全ての要素はその型の値でなければならない。
オブジェクトの配列では、階層関係にある必要がある(例えば、インタフェースの配列では、あるオブジェクトがその要素になるには、そのインタフェースを実装したクラスのインスタンスでなければならない)。
配列オブジェクトは配列要素の数を表す読み取り専用の属性「length」を持つ。
すべての配列は動的に領域確保される。配列を生成する際の要素数として、定数だけでなく変数を使用することができる。
「配列の配列」ではない、(C#にあるような「本物の」)多次元配列(矩形配列)は無い。
waitメソッド
waitメソッドには三つのオーバーロード版があり、タイムアウト値の指定方法がそれぞれ異なる:wait()、wait(long timeout)、wait(long timeout, int nanos)の三つである。一つ目のメソッドはタイムアウト値が0であり、これはタイムアウトが発生しないことを意味する。二つ目のメソッドはミリ秒単位のタイムアウト値を取る。三つ目のメソッドはナノ秒単位のタイムアウト値を取り、これは1000000 * timeout + nanosとして計算される。
waitを呼んだスレッドは待機状態となり、そのオブジェクトの待ちリストに追加される。そのスレッドは以下の三つのイベントのいずれか一つが起きるまで、オブジェクトの待ちリスト上に留まる:
別のスレッドがそのオブジェクトのnotifyまたはnotifyAllメソッドを呼ぶ (詳細はnotifyメソッド参照)
別のスレッドがそのスレッドのinterrupt()メソッドを呼ぶ
waitにて指定した0でないタイムアウト値が満了する
waitメソッドは、そのオブジェクトについての同期(synchronized)ブロックまたは同期(synchronized)メソッドの内部からのみ呼ばねばならない。
「インスタンスイニシャライザ」(インスタンス初期化子)はインスタンスの (非staticな) フィールドの初期化子と同時に実行されるコードのブロックである。インスタンスフィールド初期化子とインスタンス初期化子は宣言された順番に実行される。
インスタンス初期化子とインスタンスフィールド初期化子はコンストラクタが呼び出された際に実行される。正確な実行順序としては、親クラスのコンストラクタが実行された後、かつ、自身のコンストラクタが実行される前、となる。
このアノテーションが付加されたメソッドは、そのテストクラスを呼び出す前に実行される。
任意のクラスのデフォルトの親クラスはObjectクラスである。
クラスは単一の親クラスだけを継承できる。実装多重継承はできない。