アットウィキロゴ

技術情報 > Java > Javaプログラム

Top > 技術情報 > Java > Javaプログラム

Java プログラム

記述順序

パッケージ宣言・インポート宣言・クラス/インターフェース宣言の順に記述
それぞれ複数書くことが許される

キーワードと識別子

予約語は使用できない assertは別扱い
英字・$・_・数字を使用できるが、数字を先頭にはできない
大文字と小文字は区別される

アクセス修飾子

public / protected / / private

クラス修飾子

public / abstract / final

クラスの定義

フィールド・コンストラクタ・メソッド・静的初期化子が定義される

abstract

finalと同時に指定できない
インターフェースを実装するためには、implements
抽象クラスとサブインターフェースを実装するためには、extends
インターフェースは複数実装することができる
抽象メソッドはデフォルトでpublicとなり、フィールドはpublic final staticとなる

final

finalのついたフィールドは、定数となり再定義ができない
finalのついたメソッドは、継承によりオーバーライドできない
finalのついたクラスは、サブクラスが作れない
ただし、参照型変数の場合、変数の指すオブジェクトのデータ自体には変更を加えれる

static

staticのつかないフィールドは、インスタンス変数と呼ばれオブジェクト毎に関連付けられる
staticのつくフィールドは、クラス変数と呼ばれ参照されるクラス毎に関連付けられる

サブクラスにおけるコンストラクタ

this / superはコンストラクタ本体の先頭に書く
superの呼び出しを明示指定しないと、先頭にsuper();が挿入される

オーバーロード

同名で同じシグネチャの異なるメソッドを一つのクラスに宣言できる
同じシグネチャで戻り値が異なるメソッドは定義できない

オーバーライド

サブクラスにおいて、スーパークラスと同名で同じシグネチャ・同じ戻り値のメソッドを再定義すること
スーパークラスの制限より緩和された修飾子をつけることができない

ポリモーフェズム

スーパークラスの変数で全ての全てのサブクラスのオブジェクトを扱えること

インターフェース修飾子

public / abstract

フィールド修飾子

final / static / transient (non-serializable) / volatile (non-tuned up)

メソッド修飾子

abstract / final / native (depends on the platform code) / static / synchronized

ガベージコレクション

スコープを外れた一時変数は自動的に対象になる
System.gc(); Runtime.getRuntime().gc(); でガベージコレクションを促すことができる
finalizeメソッドは、メモリ以外のリソースの回収を行う

finally 節

例外をスローする手段の一つであるtry構造において、例外の有無・return文の有無に関わらず実行される文を列挙

RuntimeException

Arithmetic / ArrayStore / ClassCast / IndexOutOfBounds / NullPointer などは非検査例外であるため、コンパイルエラーがなくスローする必要もない

不適切なアサーション

publicメソッド内の引数チェック・本来評価すべきboolean式の使用(無効化の場合への対処)・エンドユーザの入力処理

アサーション対象の優先順位

  • ea / -da オプションの使用に関して、クラス名を指定するような詳細な対象指定が優先され、矛盾する対象指定では後を優先

ローカルインナークラス

メソッド内で記述したインタークラス(非static)は、メソッド内のfinalなフィールド・finalな引数と外部の全てのフィールドにアクセス可能

スレッド

一つのプログラム中の複数の実行経路
startメソッドにより、runメソッド内に記述された内容が実行runメソッドを直接実行してもスレッド化されない
setPriorityメソッドで優先度を指定する MIN / MAX / NORM_PRIORITY値で指定
優先度の解釈はシステムに依存しており、予測できない
スレッドスケジューラがスレッドの実行を制御
スレッドスケジューラの機能は環境に依存
スレッドの状態には、実行中・実行可能・実行不可能・デッド(再実行不可能)の4つがある
yield / sleep は static メソッド join は、非static メソッドである
waitメソッドは、synchronizedなメソッドやブロック内で実行できる
スレッド内にstaticな変数がある場合、データの不整合がおきうる

ロック探索状態

synchronizedメソッドである場合や、waitしている状態でnotify / notifyAllが実行されたときにロック探索状態となる

タグ:

+ タグ編集
  • タグ:
最終更新:2007年11月15日 07:21