目次 | | | 索引 Java言語規定
第2版

Java言語規定 第2版
目次


序文

0. 標準情報としての導入

0.1 適用範囲
0.2 定義

1. はしがき

1.1 プログラム例
1.2 記法
1.3 既定義のクラスとインタフェースとの関係
1.4 引用規定

2. 文法

2.1 文脈自由文法
2.2 字句文法
2.3 構文文法
2.4 文法記法

3. 字句構造

3.1 Unicode
3.2 字句変換
3.3 Unicodeエスケープ
3.4 行終端子
3.5 入力要素及びトークン
3.6 空白類
3.7 注釈
3.8 識別子
3.9 キーワード
3.10 リテラル
3.10.1 整数リテラル
3.10.2 浮動小数点リテラル
3.10.3 論理値リテラル
3.10.4 文字リテラル
3.10.5 文字列リテラル
3.10.6 文字及び文字列リテラルのためのエスケープシーケンス
3.10.7 空リテラル
3.11 分離子
3.12 演算子

4. 型,値及び変数

4.1 型及び値の種類
4.2 プリミティブ型及び値
4.2.1 整数的な型及び値
4.2.2 整数演算
4.2.3 浮動小数点型,フォーマット及び値
4.2.4 浮動小数点演算
4.2.5 boolean型及び boolean値
4.3 参照型及び値
4.3.1 オブジェクト
4.3.2 クラスObject
4.3.3 クラスString
4.3.4 参照型の同一条件
4.4 型の使用場所
4.5 変数
4.5.1 プリミティブ型の変数
4.5.2 参照型の変数
4.5.3 変数の種類
4.5.4 final変数
4.5.5 変数の初期値
4.5.6 型,クラス,及びインタフェース

5. 変換及び昇格

5.1 変換の種別
5.1.1 恒等変換
5.1.2 プリミティブ型の拡大変換
5.1.3 プリミティブ型の縮小変換
5.1.4 参照型の拡大変換
5.1.5 参照型の縮小変換
5.1.6 文字列変換
5.1.7 禁止される変換
5.1.8 値集合変換
5.2 代入変換
5.3 メソッド呼出し変換
5.4 文字列変換
5.5 キャスト変換
5.6 数値昇格
5.6.1 単項数値昇格
5.6.2 二項数値昇格

6. 名前

6.1 宣言
6.2 名前及び識別子
6.3 宣言の有効範囲
6.3.1 宣言のおおい隠し
6.3.2 不明瞭化された宣言
6.4 メンバ及び継承
6.4.1 パッケージのメンバ
6.4.2 クラス型のメンバ
6.4.3 インタフェース型のメンバ
6.4.4 配列型のメンバ
6.5 名前の意味の決定
6.5.1 文脈に従った名前の構文上の分類
6.5.2 文脈的にあいまいな名前の再分類
6.5.3 パッケージ名の意味
6.5.3.1 単純パッケージ名
6.5.3.2 限定パッケージ名
6.5.4 パッケージ又は型名の意味
6.5.4.1 単純パッケージ又は型名
6.5.4.2 限定パッケージ又は型名
6.5.5 型名の意味
6.5.5.1 単純型名
6.5.5.2 限定型名
6.5.6 式名の意味
6.5.6.1 単純式名
6.5.6.2 限定式名
6.5.7 メソッド名の意味
6.5.7.1 単純メソッド名
6.5.7.2 限定メソッド名
6.6 アクセス制御
6.6.1 アクセス性の決定
6.6.2 protectedアクセスの詳細
6.6.2.1 protectedメンバへのアクセス
6.6.2.2 protectedコンストラクタへの限定アクセス
6.6.3 アクセス制御の例
6.6.4 public及び非publicクラスへのアクセスの例
6.6.5 フィールド,メソッド及びコンストラクタのデフォルトアクセスの例
6.6.6 publicフィールド,メソッド及びコンストラクタの例
6.6.7 protectedフィールド,メソッド及びコンストラクタの例
6.6.8 privateフィールド,メソッド及びコンストラクタの例
6.7 完全限定名及び正準名
6.8 名前付け規約
6.8.1 パッケージ名
6.8.2 クラス及びインタフェース型名
6.8.3 メソッド名
6.8.4 フィールド名
6.8.5 定数名
6.8.6 局所変数及び仮引数名

7. パッケージ

7.1 パッケージのメンバ
7.2 パッケージのホスト支援
7.2.1 ファイルシステム内のパッケージの格納
7.2.2 データベース内のパッケージの格納
7.3 コンパイル単位
7.4 パッケージ宣言
7.4.1 名前付きパッケージ
7.4.2 名前なしパッケージ
7.4.3 パッケージの観測可能性
7.4.4 パッケージ宣言の有効範囲
7.5 インポート宣言
7.5.1 単一の型インポート宣言
7.5.2 要求時の型インポート宣言
7.5.3 自動インポート
7.5.4 まれな例
7.6 最上位の型宣言
7.7 一意なパッケージ名

8. クラス

8.1 クラス宣言
8.1.1 クラス修飾子
8.1.1.1 abstractクラス
8.1.1.2 finalクラス
8.1.1.3 strictfpクラス
8.1.2 内部クラス及び取り囲みインスタンス
8.1.3 上位クラス及び下位クラス
8.1.4 上位インタフェース
8.1.5 クラス本体及びメンバ宣言
8.2 クラスのメンバ
8.2.1 継承の例
8.2.1.1 デフォルトアクセスを伴った継承の例
8.2.1.2 public及び protectedを伴った継承
8.2.1.3 privateを伴った継承
8.2.1.4 アクセス不可能クラスのメンバへのアクセス
8.3 フィールド宣言
8.3.1 フィールド修飾子
8.3.1.1 staticフィールド
8.3.1.2 finalフィールド
8.3.1.3 transientフィールド
8.3.1.4 volatileフィールド
8.3.2 フィールドの初期化
8.3.2.1 クラス変数用の初期化子
8.3.2.2 インスタンス変数用の初期化子
8.3.2.3 初期化中のフィールド使用への制限
8.3.3 フィールド宣言の例
8.3.3.1 例: クラス変数の隠ぺい
8.3.3.2 例: インスタンス変数の隠ぺい
8.3.3.3 例: 多重に継承されたフィールド
8.3.3.4 例: フィールドの再継承
8.4 メソッド宣言
8.4.1 形式仮引数
8.4.2 メソッドのシグネチャ
8.4.3 メソッド修飾子
8.4.3.1 abstractメソッド
8.4.3.2 staticメソッド
8.4.3.3 finalメソッド
8.4.3.4 nativeメソッド
8.4.3.5 strictfpメソッド
8.4.3.6 synchronizedメソッド
8.4.4 メソッドのthrows節
8.4.5 メソッド本体
8.4.6 継承,上書き及び隠ぺい
8.4.6.1 (インスタンスメソッドによる)上書き
8.4.6.2 (クラスメソッドによる)隠ぺい
8.4.6.3 上書き及び隠ぺいの要件
8.4.6.4 同じシグネチャをもつメソッドの継承
8.4.7 オーバロード
8.4.8 メソッド宣言の例
8.4.8.1 例: 上書き
8.4.8.2 例: オーバロード,上書き及び隠ぺい
8.4.8.3 例: 不当な上書き
8.4.8.4 例: 上書き及び隠ぺい
8.4.8.5 例: 隠ぺいされたクラスメソッドの呼出し
8.4.8.6 上書きの大きな例
8.4.8.7 例: 例外投げ(throw)がひき起こす不正な上書き
8.5 メンバ型宣言
8.5.1 アクセス修飾子
8.5.2 staticメンバ型宣言
8.6 インスタンス初期化子
8.7 静的初期化子
8.8 コンストラクタの宣言
8.8.1 形式仮引数
8.8.2 コンストラクタのシグネチャ
8.8.3 コンストラクタ修飾子
8.8.4 コンストラクタのthrows節
8.8.5 コンストラクタ本体
8.8.5.1 明示的コンストラクタ呼出し
8.8.6 コンストラクタのオーバロード
8.8.7 デフォルトコンストラクタ
8.8.8 クラスのインスタンス化の抑制

9. インタフェース

9.1 インタフェース宣言
9.1.1 インタフェース修飾子
9.1.1.1 abstractインタフェース
9.1.1.2 strictfpインタフェース
9.1.2 上位インタフェース及び下位インタフェース
9.1.3 インタフェース本体及びメンバ宣言
9.1.4 インタフェースメンバ名へのアクセス
9.2 インタフェースメンバ
9.3 フィールド(定数)宣言
9.3.1 インタフェース内でのフィールドの初期化
9.3.2 フィールド宣言の例
9.3.2.1 あいまいな継承フィールド
9.3.2.2 多重継承フィールド
9.4 抽象メソッド宣言
9.4.1 継承及び上書き
9.4.2 オーバロード
9.4.3 抽象メソッド宣言の例
9.4.3.1 例: 上書き
9.4.3.2 例: オーバロード
9.5 メンバ型宣言

10. 配列

10.1 配列型
10.2 配列変数
10.3 配列生成
10.4 配列のアクセス
10.5 配列: 簡単な例題
10.6 配列初期化子
10.7 配列のメンバ
10.8 配列に対するオブジェクトClass
10.9 非文字列としての文字の配列
10.10 配列記憶例外

11. 例外

11.1 例外の原因
11.2 コンパイル時の例外検査
11.2.1 エラーを検査しない理由
11.2.2 実行時例外を検査しない理由
11.3 例外の取扱い
11.3.1 例外の正確性
11.3.2 非同期例外処理
11.4 例外の例
11.5 例外階層
11.5.1 ロードエラー及びリンクエラー
11.5.2 仮想計算機エラー

12. 実行

12.1 仮想計算機の開始
12.1.1 クラスTestのロード
12.1.2 Testのリンク: 検証,準備及び(オプションの)記号解決
12.1.3 Testの初期化: 初期化子の実行
12.1.4 Test.mainの呼出し
12.2 クラス及びインタフェースのロード
12.2.1 ロード処理
12.3 クラス及びインタフェースのリンク
12.3.1 バイナリ表現の検証
12.3.2 クラス又はインタフェース型の準備
12.3.3 記号参照の解決
12.4 クラス及びインタフェースの初期化
12.4.1 初期化の発生時点
12.4.2 初期化手続きの詳細
12.4.3 初期化: コード生成との関係
12.5 新しいクラスインスタンスの生成
12.6 クラスインスタンスの終了
12.6.1 終了化子の実装
12.6.2 終了化子の呼出しの非順序性
12.7 クラス及びインタフェースのアンロード
12.8 プログラムの抜出し

13. バイナリの互換性

13.1 バイナリの形式
13.2 バイナリ互換性の有無
13.3 パッケージの機能変更
13.4 クラスの機能変更
13.4.1 abstractクラス
13.4.2 finalクラス
13.4.3 publicクラス
13.4.4 上位クラス及び上位インタフェース
13.4.5 クラス本体及びメンバ宣言
13.4.6 メンバ及びコンストラクタへのアクセス
13.4.7 フィールド宣言
13.4.8 finalフィールド及び定数
13.4.9 staticフィールド
13.4.10 transientフィールド
13.4.11 メソッド及びコンストラクタ宣言
13.4.12 メソッド及びコンストラクタの仮引数
13.4.13 メソッドの結果の型
13.4.14 abstractメソッド
13.4.15 finalメソッド
13.4.16 nativeメソッド
13.4.17 staticメソッド
13.4.18 synchronizedメソッド
13.4.19 メソッド及びコンストラクタのthrows節
13.4.20 メソッド及びコンストラクタ本体
13.4.21 メソッド及びコンストラクタのオーバロード
13.4.22 メソッドの上書き
13.4.23 静的初期化子
13.5 インタフェースの機能変更
13.5.1 publicインタフェース
13.5.2 上位インタフェース
13.5.3 インタフェースメンバ
13.5.4 フィールド宣言
13.5.5 abstractメソッド宣言

14. ブロック及び文

14.1 文の正常完了及び中途完了
14.2 ブロック
14.3 局所クラス宣言
14.4 局所変数宣言文
14.4.1 局所変数の宣言子及び型
14.4.2 局所変数宣言の有効範囲
14.4.3 局所変数による名前のおおい隠し
14.4.4 局所変数宣言の実行
14.5 文
14.6 空文
14.7 ラベル付き文
14.8 式文
14.9 if文
14.9.1 if-then文
14.9.2 if-then-else文
14.10 switch文
14.11 while文
14.11.1 中途完了
14.12 do文
14.12.1 中途完了
14.12.2 do文の例
14.13 for文
14.13.1 for文の初期化
14.13.2 for文の繰返し
14.13.3 for文の中途完了
14.14 break文
14.15 continue文
14.16 return文
14.17 throw文
14.18 synchronized文
14.19 try文
14.19.1 try-catchの実行
14.19.2 try-catch-finallyの実行
14.20 到達不能文

15. 式

15.1 評価,表示及び結果
15.2 値としての変数
15.3 式の型
15.4 FP厳密式
15.5 式及び実行時検査
15.6 評価の正常完了及び中途完了
15.7 評価順序
15.7.1 左辺オペランドを最初に評価
15.7.2 演算前にオペランド評価
15.7.3 括弧及び優先順位に従う評価
15.7.4 引数リストにおける左から右への評価
15.7.5 他の式の評価順序
15.8 一次式
15.8.1 字句リテラル
15.8.2 クラスリテラル
15.8.3 this
15.8.4 限定this
15.8.5 括弧で括った式
15.9 クラスインスタンス生成式
15.9.1 インスタンス化されるクラスの決定
15.9.2 取囲みインスタンスの決定
15.9.3 コンストラクタと引数の選択
15.9.4 クラスインスタンス生成式の実行時評価
15.9.5 匿名クラス宣言
15.9.5.1 匿名コンストラクタ
15.9.6 例: 評価順序及びメモリ不足の検出
15.10 配列生成式
15.10.1 配列生成式の実行時評価
15.10.2 例: 配列生成評価順序
15.10.3 例: 配列生成及びメモリ不足の検出
15.11 フィールドアクセス式
15.11.1 一次式によるフィールドアクセス
15.11.2 superによる上位クラスメンバのアクセス
15.12 メソッド呼出し式
15.12.1 コンパイルの段階1: 探索すべきクラス又はインタフェースの決定
15.12.2 コンパイルの段階2: メソッドシグネチャの決定
15.12.2.1 適用可能及び参照可能なメソッドの検索
15.12.2.2 最も特殊なメソッドの選択
15.12.2.3 例: オーバロードのあいまいさ
15.12.2.4 例: 返却値の型の無視
15.12.2.5 例: コンパイル時の解決
15.12.3 コンパイルの段階3: 選ばれたメソッドの適切性
15.12.4 メソッド呼出しの実行時評価
15.12.4.1 ターゲット参照の計算(必要な場合)
15.12.4.2 実引数の評価
15.12.4.3 型及びメソッドのアクセス可能性の検査
15.12.4.4 呼出しメソッドの検索
15.12.4.5 フレームの生成,同期及び制御の移行
15.12.4.6 例: ターゲット参照及び静的メソッド
15.12.4.7 例: 評価の順序
15.12.4.8 例: 上書き
15.12.4.9 例: superを用いたメソッド呼出し
15.13 配列アクセス式
15.13.1 配列アクセスの実行時評価
15.13.2 例: 配列アクセス評価順序
15.14 後置式
15.14.1 後置増分演算子 ++
15.14.2 後置減分演算子 --
15.15 単項演算子
15.15.1 前置増分演算子 ++
15.15.2 前置減分演算子 --
15.15.3 単項プラス演算子 +
15.15.4 単項マイナス演算子 -
15.15.5 ビット単位の補数演算子 ~
15.15.6 論理的な補数演算子 !
15.16 キャスト式
15.17 乗除演算子
15.17.1 乗算演算子 *
15.17.2 除算演算子 /
15.17.3 剰余演算子 %
15.18 加減演算子
15.18.1 文字列連結演算子 +
15.18.1.1 文字列変換
15.18.1.2 文字列連結の最適化
15.18.1.3 文字列連結の例
15.18.2 数値型加減演算子 ( +及び - )
15.19 シフト演算子
15.20 関係演算子
15.20.1 数値比較演算子 <, <=, >, 及び >=
15.20.2 型比較演算子 instanceof
15.21 等価演算子
15.21.1 数値等価演算子 == 及び !=
15.21.2 論理型等価演算子 == 及び !=
15.21.3 参照型等価演算子 == 及び !=
15.22 ビット単位及び論理演算子
15.22.1 整数値ビット単位演算子 &, ^, 及び |
15.22.2 論理型論理演算子 &, ^, 及び |
15.23 条件AND演算子 &&
15.24 条件OR演算子 ||
15.25 条件演算子 ? :
15.26 代入演算子
15.26.1 単純代入演算子 =
15.26.2 複合代入演算子
15.27 式
15.28 定数式

16. 確実な代入

16.1 確実な代入及び式
16.1.1 論理定数式
16.1.2 論理演算子 &&
16.1.3 論理演算子 ||
16.1.4 論理演算子 !
16.1.5 論理演算子 ? :
16.1.6 条件演算子 ? :
16.1.7 代入式
16.1.8 演算子++及び--
16.1.9 他の式
16.2 確実な代入及び文
16.2.1 空文
16.2.2 ブロック
16.2.3 局所クラス宣言文
16.2.4 局所変数宣言文
16.2.5 ラベル付き文
16.2.6 式文
16.2.7 if文
16.2.8 switch文
16.2.9 while文
16.2.10 do文
16.2.11 for文
16.2.11.1 初期化部
16.2.11.2 増分部
16.2.12 break, continue, return, 及びthrow文
16.2.13 synchronized文
16.2.14 try文
16.3 確実な代入及び仮引数
16.4 確実な代入及び配列初期化子
16.5 確実な代入及び匿名クラス
16.6 確実な代入及びメンバの型
16.7 確実な代入及び静的初期化子
16.8 確実な代入,コンストラクタ,及びインスタンス初期化子

17. スレッド及びロック

17.1 用語及び枠組み
17.2 実行順序
17.3 変数についての規則
17.4 double及びlong の非アトム的取扱い
17.5 ロックについての規則
17.6 ロック及び変数の相互作用についての規則
17.7 volatile宣言された変数の規則
17.8 予測される記憶動作
17.9 議論
17.10 例: 実行可能なスワップ
17.11 例: 無秩序書込み
17.12 スレッド
17.13 ロック及び同期
17.14 待機集合及び通知

18. 構文

18.1 Javaプログラム言語の文法

索引

解説

目次 | | | 索引 Java言語規定
第2版