magazine.gif プログラミング言語Java 第4版

日本語版によせて
訳者まえがき
序文

第1章 はやめぐり

  • 1.1 さあはじめよう
  • 1.2 変数
  • 1.3 コード中のコメント
  • 1.4 名前付定数
  • 1.5 Unicode文字
  • 1.6 制御の流れ
  • 1.7 クラスとオブジェクト
    • 1.7.1 オブジェクトの生成
    • 1.7.2 staticフィールド(クラスフィールド)
    • 1.7.3 ガーベッジコレクタ
  • 1.8 メソッドとパラメータ
    • 1.8.1 メソッド呼び出し
    • 1.8.2 this参照
    • 1.8.3 staticメソッド(クラスメソッド)
  • 1.9 配列
  • 1.10 文字列オブジェクト
    • 1.10.1 文字列変換と出力書式
  • 1.11 クラスを拡張する
    • 1.11.1 スーパークラスのメソッドの呼び出し
    • 1.11.2 Objectクラス
    • 1.11.3 型キャスト
  • 1.12 インタフェース
  • 1.13 ジェネリック型
  • 1.14 例外
  • 1.15 アノテーション
  • 1.16 パッケージ
  • 1.17 Javaプラットフォーム
  • 1.18 その他の機能について

第2章 クラスとオブジェクト

  • 2.1 簡単なオブジェクト
    • 2.1.1 クラスのメンバー
    • 2.1.2 クラスの修飾子
  • 2.2 フィールド
    • 2.2.1 フィールドの初期化
    • 2.2.2 staticフィールド
    • 2.2.3 finalフィールド
  • 2.3 アクセス制御
  • 2.4 オブジェクトの生成
  • 2.5 生成と初期化
    • 2.5.1 コンストラクタ
    • 2.5.2 初期化ブロック
    • 2.5.3 static初期化
  • 2.6 メソッド
    • 2.6.1 staticメソッド
    • 2.6.2 メソッド呼び出し
    • 2.6.3 可変長引数の持つメソッド
    • 2.6.4 メソッドの実行と戻り
    • 2.6.5 パラメータ値
    • 2.6.6 アクセス制御のためのメソッド使用
  • 2.7 this
  • 2.8 メソッドのオーバーロード
  • 2.9 staticメンバー名のインポート
  • 2.10 mainメソッド
  • 2.11 ネイティブメソッド

第3章 クラスの拡張

  • 3.1 拡張したクラス
  • 3.2 拡張したクラスのコンストラクタ
    • 3.2.1 コンストラクタの順序の依存性
  • 3.3 メンバーの継承と再定義
    • 3.3.1 オーバーライド
    • 3.3.2 フィールドの隠蔽
    • 3.3.3 継承されたメンバーへのアクセス
    • 3.3.4 アクセス制限とオーバーライド
    • 3.3.5 staticメンバーの隠蔽
    • 3.3.6 super予約後
  • 3.4 型の互換性と変換
    • 3.4.1 互換性
    • 3.4.2 明示的な型キャスト
    • 3.4.3 型の検査
  • 3.5 protectedが本当に意味すること
  • 3.6 メソッドとクラスをfinalにする
  • 3.7 抽象クラスと抽象メソッド
  • 3.8 Objectクラス
  • 3.9 オブジェクトの複製
    • 3.9.1 複製に対する戦略
    • 3.9.2 正しい複製
    • 3.9.3 浅い複製と深い複製
  • 3.10 クラスの拡張:どのように、そしていつ
  • 3.11 拡張されるクラスの設計
    • 3.11.1 拡張可能なフレームワークの設計
  • 3.12 単一継承と多重継承

第4章 インタフェース

  • 4.1 簡単なインタフェースの例
  • 4.2 インタフェース宣言
    • 4.2.1 インタフェース定数
    • 4.2.2 インタフェースメソッド
    • 4.2.3 インタフェース修飾子
  • 4.3 インタフェースの拡張
    • 4.3.1 定数の継承と隠蔽
    • 4.3.2 メソッドの継承、オーバーライド、オーバーロード
  • 4.4 インタフェースを使用する
    • 4.4.1 インタフェースを実装する
    • 4.4.2 実装を使用する
  • 4.5 マーカーインタフェース
  • 4.6 いつインタフェースを使うか

第5章 ネストしたクラスとインタフェース

  • 5.1 staticをネストした型
    • 5.1.1 staticのネストしたクラス
    • 5.1.2 ネストしたインタフェース
  • 5.2 内部クラス
    • 5.2.1 エンクロージングオブジェクトへのアクセス
    • 5.2.2 内部クラスの拡張
    • 5.2.3 継承、スコープ、隠蔽
  • 5.3 ローカル内部クラス
    • 5.3.1 static文脈での内部クラス
  • 5.4 無名内部クラス
  • 5.5 ネストした型を継承する
  • 5.6 インタフェース内でのネスト
    • 5.6.1 インタフェース内の変更可能な変数
  • 5.7 ネストした型の実装

第6章 列挙列

  • 6.1 簡単なenumの例
  • 6.2 enum宣言
    • 6.2.1 enum修飾子
  • 6.3 enum定数宣言
    • 6.3.1 生成
    • 6.3.2 定数固有の振る舞い
  • 6.4 java.lang.Enum
  • 6.5 enumを使用すべきか否か

第7章 トークン、値、変数

  • 7.1 字句要素
    • 7.1.1 文字セット
    • 7.1.2 コメント
    • 7.1.3 トークン
    • 7.1.4 識別子
    • 7.1.5 予約後
  • 7.2 型とリテラル
    • 7.2.1 参照リテラル
    • 7.2.2 ブール値リテラル
    • 7.2.3 文字リテラル
    • 7.2.4 整数リテラル
    • 7.2.5 浮動小数点リテラル
    • 7.2.6 文字列リテラル
    • 7.2.7 クラスリテラル
  • 7.3 変数
    • 7.3.1 フィールドとローカル変数の宣言
    • 7.3.2 パラメータ変数
    • 7.3.3 final変数
  • 7.4 配列変数
    • 7.4.1 配列修飾子
    • 7.4.2 配列の配列
    • 7.4.3 配列の初期化
    • 7.4.4 配列と型
  • 7.5 名前の意味

第8章 型としての基本データ型

  • 8.1 共通のフィールドとメソッド
    • 8.1.1 生成
    • 8.1.2 定数
    • 8.1.3 共通のメソッド
  • 8.2 Void
  • 8.3 Boolean
  • 8.4 Number
    • 8.4.1 整数ラッパー
    • 8.4.2 浮動小数点ラッパークラス
  • 8.5 Character
    • 8.5.1 UTF-16を扱う
  • 8.6 ボクシング変換

第9章 演算子と式

  • 9.1 算術演算
    • 9.1.1 整数算術
    • 9.1.2 浮動小数点算術
    • 9.1.3 Strictと非Strictの浮動小数点算術
  • 9.2 一般の演算子
    • 9.2.1 インクリメント演算子とデクリメント演算子
    • 9.2.2 関係演算子と等価演算子
    • 9.2.3 論理演算子
    • 9.2.4 instanceof
    • 9.2.5 ビット操作演算子
    • 9.2.6 条件演算子?:
    • 9.2.7 代入演算子
    • 9.2.8 文字列結合演算子
    • 9.2.9 new
  • 9.3 式
    • 9.3.1 評価順序
    • 9.3.2 式の型
  • 9.4 型変換
    • 9.4.1 暗黙の型変換
    • 9.4.2 明示的な型キャスト
    • 9.4.3 文字列変換
  • 9.5 演算子の優先順位と結合規則
  • 9.6 メンバーアクセス
    • 9.6.1 正しいメソッドを見つける

第10章 制御の流れ

  • 10.1 文とブロック
  • 10.2 if-else
  • 10.3 switch
  • 10.4 whileとdo-while
  • 10.5 for
    • 10.5.1 基本for文
    • 10.5.2 拡張for文
  • 10.6 ラベル
  • 10.7 break
  • 10.8 continue
  • 10.9 return
  • 10.10 え、gotoがない?

第11章 ジェネリック型

  • 11.1 ジェネリック型宣言
    • 11.1.1 境界のある型パラメータ
    • 11.1.2 ネストしたジェネリック型
  • 11.2 ジェネリック型を扱う
    • 11.2.1 サブタイプとワイルドカード
  • 11.3 ジェネリックメソッドとジェネリックコンストラクタ
    • 11.3.1 ジェネリック呼び出しと型推論
  • 11.4 ワイルドカードキャプチャ
  • 11.5 詳細:イレイジャと原型
    • 11.5.1 実行時のイレイジャ
    • 11.5.2 オーバーロードとオーバーライド
  • 11.6 正しいメソッドを見つける―再訪
  • 11.7 クラス拡張とジェネリック型

第12章 例外とアサーション

  • 12.1 例外型の作成
  • 12.2 throw
    • 12.2.1 制御に移動
    • 12.2.2 非同期例外
  • 12.3 throw節
    • 12.3.1 throws節とメソッドのオーバーライド
    • 12.3.2 throws節とネイティブメソッド
  • 12.4 try、catch、finally
    • 12.4.1 finally
  • 12.5 例外連鎖
  • 12.6 スタックトレース
  • 12.7 いつ例外を使用するか
  • 12.8 アサーション
    • 12.8.1 assert文
  • 12.9 いつアサーションを使用するか
    • 12.9.1 状態アサーション
    • 12.9.2 制御フローアサーション
  • 12.10 アサーションを有効/無効にする
    • 12.10.1 アサーションを有効/無効にする理由
    • 12.10.2 コマンドラインでアサーションを制御する
    • 12.10.3 完全な除去
    • 12.10.4 アサーションを必須にする

第13章 文字列と正規表現

  • 13.1 文字シーケンス
  • 13.2 Stringクラス
    • 13.2.1 基本String捜査
    • 13.2.2 文字列比較
    • 13.2.3 文字列リテラル、同値性、インターン
    • 13.2.4 関連する文字列の作成
    • 13.2.5 文字列変換
    • 13.2.6 文字列とchar配列
    • 13.2.7 文字列とbyte配列
    • 13.2.8 文字セットエンコーディング
  • 13.3 正規表現一致
    • 13.3.1 正規表現
    • 13.3.2 コンパイルと正規表現との一致
    • 13.3.3 置換
    • 13.3.4 範囲
    • 13.4.5 効率
  • 13.4 StringBuilderクラス
    • 13.4.1 バッファを変更する
    • 13.4.2 データを取り出す
    • 13.4.3 容量管理
    • 13.4.4 StringBufferクラス
  • 13.5 UTF-16を扱う

第14章 スレッド

  • 14.1 スレッドの生成
  • 14.2 Runnableを使用する
  • 14.3 同期
    • 14.3.1 synchronizedメソッド
    • 14.3.2 staticのsynchronizedメソッド
    • 14.3.3 synchronized文
    • 14.3.4 同期設計
  • 14.4 wait、notifyAll、notify
  • 14.5 待ちと通知の詳細
  • 14.6 スレッドのスケジューリング
    • 14.6.1 自発的な再スケジューリング
  • 14.7 デッドロック
  • 14.8 スレッド実行を終了させる
    • 14.8.1 スレッドのキャンセル
    • 14.8.2 スレッドの完了を待つ
  • 14.9 アプリケーション実行を終了させる
  • 14.10 メモリモデル:同期とvolatile
    • 14.10.1 同期アクション
    • 14.10.2 finalフィールドとセキュリティ
    • 14.10.3 事前発生関係
  • 14.11 スレッド管理、セキュリティ、ThreadGroup
  • 14.12 スレッドと例外
    • 14.12.1 stopするな
    • 14.12.2 スタックトレース
  • 14.13 ThreadLocal変数
  • 14.14 スレッドのデバッグ

第15章 アノテーション

  • 15.1 簡単なアノテーション例
  • 15.2 アノテーション型
  • 15.3 要素にアノテーションを付ける
  • 15.4 アノテーションの適用を制限する
  • 15.5 リテンションポリシー
  • 15.6 アノテーションを用いる

第16章 リフレクション

  • 16.1 Classクラス
    • 16.1.1 型トークン
    • 16.1.2 クラスの調査
    • 16.1.3 クラスメンバーを調べる
    • 16.1.4 クラスを名前で指定する
    • 16.1.5 名前でClassオブジェクトを取得する
    • 16.1.6 実行時型の問い合わせ
  • 16.2 アノテーションの問い合わせ
  • 16.3 Modifierクラス
  • 16.4 メンバークラス
  • 16.5 アクセス権の検査とAccessibleObject
  • 16.6 Fieldクラス
    • 16.6.1 finalフィールド
  • 16.7 Methodクラス
  • 16.8 新たなオブジェクトの生成とConstructorクラス
    • 16.8.1 内部クラスのコンストラクタ
  • 16.9 ジェネリック型のインスペクション
    • 16.9.1 型変数
    • 16.9.2 パラメータ化された型
    • 16.9.3 ワイルドカード
    • 16.9.4 ジェネリック配列
    • 16.9.5 型オブジェクトの文字列表現
  • 16.10 配列
    • 16.10.1 総称性と動的配列
  • 16.11 パッケージ
  • 16.12 Proxyクラス
  • 16.13 クラスのロード
    • 16.13.1 ClassLoaderクラス
    • 16.13.2 使用するためにクラスを準備する
    • 16.13.3 関連するリソースのロード
  • 16.14 実行時のアサーション制御

第17章 ガーベッジコレクションとメモリ

  • 17.1 ガーベッジコレクション
  • 17.2 簡単なモデル
  • 17.3 ファイナライズ
    • 17.3.1 finalize中のオブジェクトの復活
  • 17.4 ガーベッジコレクタとのやり取り
  • 17.5 到達可能性状態と参照オブジェクト
    • 17.5.1 Referenceクラス
    • 17.5.2 参照の強さと到達可能性
    • 17.5.3 参照キュー
    • 17.5.4 ファイナライズと到達可能性

第18章 パッケージ

  • 18.1 パッケージの名前付け
  • 18.2 型のインポート
  • 18.3 パッケージアクセス
    • 18.3.1 アクセス制限とメソッドのオーバーライド
  • 18.4 パッケージの内容
  • 18.5 パッケージのアノテーション
  • 18.6 パッケージオブジェクトと仕様

第19章 ドキュメンテーションコメント

  • 19.1 ドキュメントコメントの解剖
  • 19.2 タグ
    • 19.2.1 @see
    • 19.2.2 {@link}と[@linkplain}
    • 19.2.3 @param
    • 19.2.4 @return
    • 19.2.5 @throwsと@exception
    • 19.2.6 @deprecated
    • 19.2.7 @author
    • 19.2.8 @version
    • 19.2.9 @since
    • 19.2.10 {@literal}と{@code}
    • 19.2.11 {@value}
    • 19.2.12 {@docRoot}
    • 19.2.13 {@inheritDoc}
  • 19.3 メソッドのドキュメンテーションコメントを継承する
    • 19.3.1 @throwsコメントを継承する
  • 19.4 簡単な例
  • 19.5 外部規約
    • 19.5.1 パッケージと概要のドキュメンテーション
    • 19.5.2 doc-filesディレクトリ
  • 19.6 使用についての注意

第20章 I/Oパッケージ

  • 20.1 ストリーム概説
  • 20.2 バイトストリーム
    • 20.2.1 InputStream
    • 20.2.2 OutputStream
  • 20.3 文字ストリーム
    • 20.3.1 Reader
    • 20.3.2 Writer
    • 20.3.3 文字ストリームと標準ストリーム
  • 20.4 InputStreamReaderとOutputStreamReader
  • 20.5 ストリームクラスはやめぐり
    • 20.5.1 同期と並行
    • 20.5.2 Filterストリーム
    • 20.5.3 Bufferedストリーム
    • 20.5.4 Pipedストリーム
    • 20.5.5 ByteArrayバイトストリーム
    • 20.5.6 CharArray文字ストリーム
    • 20.5.7 String文字ストリーム
    • 20.5.8 Printストリーム
    • 20.5.9 LineNumberReader
    • 20.5.10 SequenceInputStream
    • 20.5.11 Pushbackストリーム
    • 20.5.12 StreamTokenizer
  • 20.6 データバイトストリーム
    • 20.6.1 DataInputとDataOutput
    • 20.6.2 Dataストリームクラス
  • 20.7 ファイルを取り扱う
    • 20.7.1 FileストリームとFileDescriptor
    • 20.7.2 RandomAccessFile
    • 20.7.3 Fileクラス
    • 20.7.4 FilenameFilterとFileFilter
  • 20.8 オブジェクトのシリアライズ
    • 20.8.1 Objectバイトストリーム
    • 20.8.2 クラスをSerializableにする
    • 20.8.3 シリアライズとディシリアライズの順序
    • 20.8.4 カスタマイズされたシリアライズ
    • 20.8.5 オブジェクトのバージョン付け
    • 20.8.6 シリアライズされたフィールド
    • 20.8.7 Externalizableインタフェース
    • 20.8.8 ドキュメンテーションコメントのタグ
  • 20.9 IOExceptionクラス
  • 20.10 新たなI/Oの一端

第21章 コレクション

  • 21.1 コレクション
    • 21.1.1 例外規約
  • 21.2 イテレーション
  • 21.3 ComparableとComparatorによる順位付け
  • 21.4 Collectionインタフェース
  • 21.5 SetとSortedSet
    • 21.5.1 HashSet
    • 21.5.2 LinkedHashSet
    • 21.5.3 TreeSet
  • 21.6 List
    • 21.6.1 ArrayList
    • 21.6.2 LinkedList
    • 21.6.3 RandomAccessリスト
  • 21.7 Queue
    • 21.7.1 PriorityQueue
  • 21.8 MapとSortedMap
    • 21.8.1 HashMap
    • 21.8.2 LinkedHashMap
    • 21.8.3 IdentityHashMap
    • 21.8.4 WeakHashMap
    • 21.8.5 TreeMap
  • 21.9 enumコレクション
    • 21.9.1 EnumSet
    • 21.9.2 EnumMap
  • 21.10 ラップされたコレクションとCollectionクラス
    • 21.10.1 Collectionsユーティリティ
    • 21.10.2 変更不可能なラッパー
    • 21.10.3 チェックされるラッパー
  • 21.11 同期されたラッパーとコンカレントコレクション
    • 21.11.1 同期されたラッパー
    • 21.11.2 コンカレントコレクション
  • 21.12 Arraysユーティリティクラス
  • 21.13 イテレータの実装を作成する
  • 21.14 コレクションの実装を作成する
  • 21.15 古いコレクション型
    • 21.15.1 Enumeration
    • 21.15.2 Vector
    • 21.15.3 Stack
    • 21.15.4 Dictionary
    • 21.15.5 Hashtable
  • 21.16 Properties

第22章 その他のユーティリティ

  • 22.1 Formatter
    • 22.1.1 フォーマット指定子
    • 22.1.2 整数変換
    • 22.1.3 浮動小数点変換
    • 22.1.4 文字変換
    • 22.1.5 汎用変換
    • 22.1.6 カスタマイズされたフォーマット
    • 22.1.7 フォーマット例外
    • 22.1.8 Formatterクラス
  • 22.2 BitSet
  • 22.3 Observer/Observable
  • 22.4 Random
  • 22.5 Scanner
    • 22.5.1 値のストリーム
    • 22.5.2 行のスキャン
    • 22.5.3 Scannerを使用する
    • 22.5.4 ローカライズ
  • 22.6 StringTokenizer
  • 22.7 TimerとTimerTask
  • 22.8 UUID
  • 22.9 MathとStrictMath

第23章 システムプログラミング

  • 23.1 Systemクラス
    • 23.1.1 標準I/Oストリーム
    • 23.1.2 システムプロパティ
    • 23.1.3 ユーティリティメソッド
  • 23.2 プロセスの生成
    • 23.2.1 Process
    • 23.2.2 プロセス環境
    • 23.2.3 ProcessBuilder
  • 23.3 シャットダウン
    • 23.3.1 シャットダウンフック
    • 23.3.2 シャットダウン動作
    • 23.3.3 シャットダウン戦略
  • 23.4 Runtimeの残り
    • 23.4.1 ネイティブコードのロード
    • 23.4.2 デバッグ
  • 23.5 セキュリティ
    • 23.5.1 SecurityManagerクラス
    • 23.5.2 許可
    • 23.5.3 セキュリティポリシー
    • 23.5.4 アクセスコントローラと特権実行

第24章 国際化とローカリゼーション

  • 24.1 ロケール
  • 24.2 リソースバンドル
    • 24.2.1 ListResourceBundle
    • 24.2.2 PropertyResourceBundle
    • 24.2.3 ResourceBundleのサブクラス化
  • 24.3 通貨
  • 24.4 時間、日付、カレンダー
    • 24.4.1 カレンダー
    • 24.4.2 タイムゾーン
    • 24.4.3 GregorianCalendarとSimpleTimeZone
  • 24.5 日付と時間の書式と解析
    • 24.5.1 日付と時間でFormatterを使用する
  • 24.6 テキストの国際化とローカリゼーション
    • 24.6.1 コレ-ション
    • 24.6.2 書式と解析
    • 24.6.3 テキスト境界

第25章 標準パッケージ

  • 25.1 java.awt―Abstract Window Toolkit
  • 25.2 java.applet―アプレット
  • 25.3 java.beans―コンポーネント
  • 25.4 java.math―数学
  • 25.5 java.net―ネットワーク
  • 25.6 java.rmi―リモートメソッド呼び出し
  • 25.7 java.securityと関連パッケージ―セキュリティツール
  • 25.8 java.sql―リレーショナルデータベースアクセス
  • 25.9 ユーティリティサブパッケージ
    • 25.9.1 同時並行性ユーティリティ―java.util.concurrent
    • 25.9.2 アーカイブファイル―java.util.jar
    • 25.9.3 ZIPファイル―java.util.zip
  • 25.10 javax.*―標準拡張
  • 25.11 javax.accessibility―GUIのアクセシビリティ
  • 25.12 javax.naming―ディレクトリとネーミングサービス
  • 25.13 javax.sound―サウンド操作
  • 25.14 javax.swing―SwingGUIコンポーネント
  • 25.15 org.omg.CORBA―CORBA API

付録A アプリケーションの進化

  • A.1 言語、ライブラリー、仮想マシンのバージョン
  • A.2 複数の方言を扱う
  • A.3 ジェネリックス:具体化、イレイジャ、原型
    • A.3.1 原型、”unchecked”警告、ブリッジメソッド
    • A.3.2 APIの問題

付録B 有用な表

さらなる学習
索引