1. Top
  2. Java Tips
  3. Java言語規定

目次 | 前 |

Java言語規定 目次


序文

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

0.1 適用範囲
0.2 引用規格
0.3 定義

1. はしがき

1.1 プログラム例
1.2 文献

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 変数の初期の値
4.5.5 変数の型及びオブジェクトのクラス

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.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.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.6 限定名及びアクセス制御
6.6.1 アクセス性の決定
6.6.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.2 クラス修飾子
8.1.2.1 abstractクラス
8.1.2.2 finalクラス
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.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 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.6 コンストラクタの宣言
8.6.1 形式仮引数
8.6.2 コンストラクタのシグネチャ
8.6.3 コンストラクタ修飾子
8.6.4 コンストラクタのthrows節
8.6.5 コンストラクタ本体
8.6.6 コンストラクタのオーバロード
8.6.7 デフォルトコンストラクタ
8.6.8 クラスのインスタンス化の抑制

9. インタフェース

9.1 インタフェース宣言
9.1.1 インタフェース型名の有効範囲
9.1.2 インタフェース修飾子
9.1.2.1 抽象インタフェース
9.1.3 スーパインタフェース
9.1.4 インタフェース本体及びメンバ宣言
9.1.5 インタフェースメンバ名へのアクセス
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 例:オーバロード

10. 配列

10.1 配列型
10.2 配列変数
10.3 配列生成
10.4 配列のアクセス
10.5 配列:簡単な例題
10.6 配列初期化子
10.7 配列のメンバ
10.8 配列に対するオブジェクト Class
10.9 charの配列とstringとの差異
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 クラスException及びクラスRuntimeException
11.5.1.1 標準実行時例外
11.5.1.2 標準検査例外
11.5.2 クラスError
11.5.2.1 ロードエラー及びリンクエラー
11.5.2.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.2.2 ローディング:コード生成との関係
12.3 クラス及びインタフェースのリンキング
12.3.1 バイナリ表現の検証
12.3.2 クラス又はインタフェース型の準備
12.3.3 名前参照の解決
12.3.4 リンキング:コード生成との関係
12.4 クラス及びインタフェースの初期化
12.4.1 初期化の発生時点
12.4.2 初期化手続きの詳細
12.4.3 初期化:コード生成との関係
12.5 新しいクラスインスタンスの生成
12.6 classインスタンスの終了
12.6.1 終了化子の実装
12.6.2 終了化子の呼出しの非順序性
12.7 クラスの終了
12.8 クラス及びインタフェースのアンローディング
12.9 仮想計算機の抜出し

13. バイナリの互換性

13.1 Javaバイナリの形式
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 volatileフィールド
13.4.12 メソッド及びコンストラクタ宣言
13.4.13 メソッド及びコンストラクタの仮引数
13.4.14 メソッドの結果の型
13.4.15 abstractメソッド
13.4.16 finalメソッド
13.4.17 nativeメソッド
13.4.18 staticメソッド
13.4.19 synchronizedメソッド
13.4.20 メソッド及びコンストラクタのthrows節
13.4.21 メソッド及びコンストラクタ本体
13.4.22 メソッド及びコンストラクタのオーバロードディング
13.4.23 メソッドの上書き
13.4.24 静的初期化子
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.3.1 局所変数の宣言子及び型
14.3.2 局所変数宣言の有効範囲
14.3.3 局所変数による名前の隠ぺい
14.3.4 局所変数宣言の実行
14.4 文
14.5 空文
14.6 ラベル付き文
14.7 式文
14.8 If文
14.8.1 if-then文
14.8.2 if-then-else文
14.9 switch文
14.10 while文
14.10.1 中途完了
14.11 do文
14.11.1 中途完了
14.11.2 do文の例
14.12 For文
14.12.1 初期化
14.12.2 繰返し
14.12.3 中途完了
14.13 break文
14.14 continue文
14.15 return文
14.16 throw文
14.17 synchronized文
14.18 try文
14.18.1 try-catchの実行
14.18.2 try-catch-finallyの実行
14.19 到達不能文

15. 式

15.1 評価,表示及び結果
15.2 値としての変数
15.3 式の型
15.4 式及び実行時検査
15.5 評価の正常完了と中途完了
15.6 評価順序
15.6.1 左辺オペランドの最初の評価
15.6.2 演算前オペランド評価
15.6.3 括弧及び優先順位の評価
15.6.4 引数リストにおける左辺から右辺への評価
15.6.5 他の式の評価順序
15.7 一次式
15.7.1 リテラル
15.7.2 this
15.7.3 括弧で括った式
15.8 クラスインスタンス生成式
15.8.1 クラスインスタンス生成式の実行時評価
15.8.2 例:評価順序とメモリ不足の検出
15.9 配列生成式
15.9.1 配列生成式の実行時評価
15.9.2 例:配列生成評価順序
15.9.3 例:配列生成とメモリ不足の検出
15.10 フィールドアクセス式
15.10.1 一次式によるフィールドアクセス
15.10.2 superによるスーパクラスメンバのアクセス
15.11 メソッド呼出し式
15.11.1 コンパイル時ステップ1:探索すべきクラス又はインタフェースの決定
15.11.2 コンパイル時ステップ2:メソッドシグネチャを決定
15.11.2.1 適用可能及び参照可能なメソッドの検索
15.11.2.2 最も特殊なメソッドの選択
15.11.2.3 例:オーバローディングのあいまいさ
15.11.2.4 例:返却値の型の考慮
15.11.2.5 例:コンパイル時の解決
15.11.3 コンパイル時ステップ3:選ばれたメソッドの適切性
15.11.4 メソッド呼出しの実行時評価
15.11.4.1 ターゲット参照の計算(必要な場合)
15.11.4.2 引数の評価
15.11.4.3 型及びメソッドのアクセス可能性の検査
15.11.4.4 呼出しメソッドの検索
15.11.4.5 フレームの生成,同期及び制御の移行
15.11.4.6 実装ノート:フレームの結合
15.11.4.7 例:ターゲット参照と静的メソッド
15.11.4.8 例:評価の順序
15.11.4.9 例:オーバライド
15.11.4.10 例:superを用いたメソッド呼出し
15.12 配列アクセス式
15.12.1 配列アクセスの実行時評価
15.12.2 例:配列アクセス評価順序
15.13 後置式
15.13.1 名前
15.13.2 後置インクリメント演算子 ++
15.13.3 後置デクリメント演算子 --
15.14 単項演算子
15.14.1 前置インクリメント演算子 ++
15.14.2 前置デクリメント演算子 --
15.14.3 単項演算子 +
15.14.4 単項マイナス演算子 -
15.14.5 ビット毎の補数演算子 ~
15.14.6 論理的な補数演算子 !
15.15 キャスト式
15.16 乗除演算子
15.16.1 乗算演算子 *
15.16.2 除算演算子 /
15.16.3 剰余演算子 %
15.17 加減演算子
15.17.1 文字列連結演算子 +
15.17.1.1 文字列変換
15.17.1.2 文字列連結の最適化
15.17.1.3 文字列連結の例
15.17.2 数値型加減演算子 ( +及び - )
15.18 シフト演算子
15.19 関係演算子
15.19.1 数値比較演算子 <, <=, >,及び >=
15.19.2 型比較演算子 instanceof
15.20 等価演算子
15.20.1 数値等価演算子 == 及び !=
15.20.2 論理型等価演算子 == 及び !=
15.20.3 参照型等価演算子 == 及び !=
15.21 ビット単位の論理演算子
15.21.1 整数値ビット単位演算子 &,^及び |
15.21.2 論理型論理演算子 &,^及び |
15.22 条件AND演算子 &&
15.23 条件OR演算子 ||
15.24 条件演算子 ? :
15.25 代入演算子
15.25.1 単純代入演算子 =
15.25.2 複合代入演算子
15.26 式
15.27 定数式

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.1.10 論理演算子 !=
16.1.11 論理演算子 ? :
16.1.12 条件演算子 ? :
16.1.13 論理代入式
16.1.14 他の代入式
16.1.15 ++及び--演算子
16.1.16 他の式
16.2 確実な代入及び文
16.2.1 空文
16.2.2 ブロック
16.2.3 局所変数宣言文
16.2.4 ラベル付き文
16.2.5 式文
16.2.6 if文
16.2.7 switch文
16.2.8 while文
16.2.9 do文
16.2.10 for文
16.2.10.1 初期化部
16.2.10.2 増分部
16.2.11 break, continue, return及びthrow文
16.2.12 synchronized文
16.2.13 try文

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 文書化用注釈のテキスト
18.2 文書化用注釈内のHTML
18.3 要約文及び概要文
18.4 タグ付き段落
18.4.1 @seeタグ
18.4.2 @authorタグ
18.4.3 @versionタグ
18.4.4 @paramタグ
18.4.5 @returnタグ
18.4.6 @exceptionタグ
18.5 例

19. LALR(1) 文法

19.1 文法上の困難
19.1.1 問題点1:明瞭すぎる名前
19.1.2 問題点2:明瞭すぎる修飾子
19.1.3 問題点3:フィールド宣言及びメソッド宣言の競合
19.1.4 問題点4:配列型及び配列アクセスの競合
19.1.5 問題点5:キャスト及び括弧付き式の競合
19.2 構文文法(2.3)からの生成規則
19.3 字句構造(3)からの生成規則
19.4 型,値及び変数(4)からの生成規則
19.5 名前(6)からの生成規則
19.6 パッケージ(7)からの生成規則
19.7 LALR(1)文法でだけ使用される生成規則
19.8 クラス(8)からの生成規則
19.8.1 クラス宣言(8.1)からの生成規則
19.8.2 フィールド宣言(8.3)からの生成規則
19.8.3 メソッド宣言(8.4)からの生成規則
19.8.4 静的初期化子(8.5)からの生成規則
19.8.5 コンストラクタ宣言(8.6)からの生成規則
19.9 インタフェース(9)からの生成規則
19.9.1 インタフェース宣言(9.1)からの生成規則
19.10 配列(10)からの生成規則
19.11 ブロック及び文(14)からの生成規則
19.12 式(15)からの生成規則

20. パッケージjava.lang

20.1 クラス java.lang.Object
20.2 インタフェース java.lang.Cloneable
20.3 クラス java.lang.Class
20.4 クラス java.lang.Boolean
20.5 クラス java.lang.Character
20.6 クラス java.lang.Number
20.7 クラス java.lang.Integer
20.8 クラス java.lang.Long
20.9 クラス java.lang.Float
20.10 クラス java.lang.Double
20.11 クラス java.lang.Math
20.12 クラス java.lang.String
20.13 クラス java.lang.StringBuffer
20.14 クラス java.lang.ClassLoader
20.15 クラス java.lang.Process
20.16 クラス java.lang.Runtime
20.17 クラス java.lang.SecurityManager
20.18 クラス java.lang.System
20.19 インタフェース java.lang.Runnable
20.20 クラス java.lang.Thread
20.21 クラス java.lang.ThreadGroup
20.22 クラス java.lang.Throwable及びそのサブクラス
20.23 クラス java.lang.ExceptionInInitializerError

21. パッケージjava.util

21.1 インタフェース java.util.Enumeration
21.2 クラス java.util.BitSet
21.3 クラス java.util.Date
21.4 クラス java.util.Dictionary
21.5 クラス java.util.Hashtable
21.6 クラス java.util.Properties
21.7 クラス java.util.Observable
21.8 インタフェース java.util.Observer
21.9 クラス java.util.Random
21.10 クラス java.util.StringTokenizer
21.11 クラス java.util.Vector
21.12 クラス java.util.Stack
21.13 クラス java.util.EmptyStackException
21.14 クラス java.util.NoSuchElementException

22. パッケージjava.io

22.1 インタフェース java.io.DataInput
22.2 インタフェース java.io.DataOutput
22.3 クラス java.io.InputStream
22.4 クラス java.io.FileInputStream
22.5 クラス java.io.PipedInputStream
22.6 クラス java.io.ByteArrayInputStream
22.7 クラス java.io.StringBufferInputStream
22.8 クラス java.io.SequenceInputStream
22.9 クラス java.io.FilterInputStream
22.10 クラス java.io.BufferedInputStream
22.11 クラス java.io.DataInputStream
22.12 クラス java.io.LineNumberInputStream
22.13 クラス java.io.PushbackInputStream
22.14 クラス java.io.StreamTokenizer
22.15 クラス java.io.OutputStream
22.16 クラス java.io.FileOutputStream
22.17 クラス java.io.PipedOutputStream
22.18 クラス java.io.ByteArrayOutputStream
22.19 クラス java.io.FilterOutputStream
22.20 クラス java.io.BufferedOutputStream
22.21 クラス java.io.DataOutputStream
22.22 クラス java.io.PrintStream
22.23 クラス java.io.RandomAccessFile
22.24 クラス java.io.File
22.25 インタフェース java.io.FilenameFilter
22.26 クラス java.io.FileDescriptor
22.27 クラス java.io.IOException
22.28 クラス java.io.EOFException
22.29 クラス java.io.FileNotFoundException
22.30 クラス java.io.InterruptedIOException
22.31 クラス java.io.UTFDataFormatException

附属書A Java 1.1に対する変更

附属書B Java訳語対照表

解説


目次 | 前 |

ページの先頭へ