目次 | 前 | 次
4. Java言語規定(第1.0版)
目 次
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.Enumeration21.2 クラス java.util.BitSet21.3 クラス java.util.Date21.4 クラス java.util.Dictionary21.5 クラス java.util.Hashtable21.6 クラス java.util.Properties21.7 クラス java.util.Observable21.8 インタフェース java.util.Observer21.9 クラス java.util.Random21.10 クラス java.util.StringTokenizer21.11 クラス java.util.Vector21.12 クラス java.util.Stack21.13 クラス java.util.EmptyStackException21.14 クラス java.util.NoSuchElementException
22. パッケージjava.io
22.1 インタフェース java.io.DataInput
22.2 インタフェース java.io.DataOutput
22.3 クラス java.io.InputStream22.4 クラス java.io.FileInputStream22.5 クラス java.io.PipedInputStream22.6 クラス java.io.ByteArrayInputStream22.7 クラス java.io.StringBufferInputStream22.8 クラス java.io.SequenceInputStream22.9 クラス java.io.FilterInputStream22.10 クラス java.io.BufferedInputStream22.11 クラス java.io.DataInputStream22.12 クラス java.io.LineNumberInputStream22.13 クラス java.io.PushbackInputStream22.14 クラス java.io.StreamTokenizer22.15 クラス java.io.OutputStream22.16 クラス java.io.FileOutputStream22.17 クラス java.io.PipedOutputStream22.18 クラス java.io.ByteArrayOutputStream22.19 クラス java.io.FilterOutputStream22.20 クラス java.io.BufferedOutputStream22.21 クラス java.io.DataOutputStream22.22 クラス java.io.PrintStream22.23 クラス java.io.RandomAccessFile22.24 クラス java.io.File22.25 インタフェース java.io.FilenameFilter22.26 クラス java.io.FileDescriptor22.27 クラス java.io.IOException22.28 クラス java.io.EOFException22.29 クラス java.io.FileNotFoundException22.30 クラス java.io.InterruptedIOException22.31 クラス java.io.UTFDataFormatException
附属書A Java 1.1に対する変更
附属書B Java訳語対照表
目次 | 前 | 次