magazine.gifパーフェクトJava【改訂2版】

Part1 Java ~ overview
1章 Javaの概要

  • 1-1 Java概論
    • 1-1-1 Javaの特徴
    • 1-1-2 JVM
    • 1-1-3 Javaの歴史
  • 1-2 Javaプログラミング初歩
    • 1-2-1 本書サンプルコードのスタイル
  • 1-3 設計と抽象化

Part2 Java言語基礎
2章 文字と文字列

  • 2-1 文字列とは
  • 2-2 文字列の操作
    • 2-2-1 Stringクラス
    • 2-2-2 Stringクラスの使用例
    • 2-2-3 文字列リテラル
    • 2-2-4 StringBuilderクラス
    • 2-2-5 文字列の結合
    • 2-2-6 文字列の比較
    • 2-2-7 文字列の大小比較とソート処理
    • 2-2-8 数値と文字列の相互変換
    • 2-2-9 toStringメソッド
    • 2-2-10 文字列の書式処理
  • 2-3 文字
    • 2-3-1 文字とは
    • 2-3-2 文字リテラル
    • 2-3-3 文字と文字列
    • 2-3-4 文字と文字列の変換
    • 2-3-5 文字とコードポイント
  • 2-4 バイトと文字
    • 2-4-1 バイトとは
    • 2-4-2 バイト列と文字列の変換

3章 数値①

  • 3-1 整数
    • 3-1-1 整数型
    • 3-1-2 ビット長と値の範囲
    • 3-1-3 桁あふれ
    • 3-1-4 リテラル表記
    • 3-1-5 文字と数値
    • 3-1-6 複数の整数型がある理由
    • 3-1-7 整数型の使い分けの指針
  • 3-2 整数の演算
    • 3-2-1 四則演算
    • 3-2-2 余剰
    • 3-2-3 符号反転
    • 3-2-4 インクリメントとデクリメント
    • 3-2-5 ビット演算
  • 3-3 型変換
    • 3-3-1 拡大変換と縮小変換
    • 3-3-2 キャスト
  • 3-4 ブーリアン(真偽値)
    • 3-4-1 ブーリアン型
    • 3-4-2 ブーリアン型の注意点

4章 変数とオブジェクト

  • 4-1 基本型と参照型
    • 4-1-1 はじめに
    • 4-1-2 オブジェクトと参照
    • 4-1-3 参照型変数とは
    • 4-1-4 基本型変数
    • 4-1-5 変数の宣言
    • 4-1-6 変数の初期化
    • 4-1-7 変数名に使える文字と規約
    • 4-1-8 変数の修飾子
  • 4-2 オブジェクト生成と代入
    • 4-2-1 new式によるオブジェクト生成
    • 4-2-2 参照型変数の代入
    • 4-2-3 基本型変数の代入
    • 4-2-4 メソッド呼び出し時などの代入
    • 4-2-5 null参照
    • 4-2-6 Optional型
    • 4-2-7 変数を介さないオブジェクトの操作
  • 4-3 変数と型
    • 4-3-1 変数型と代入可能オブジェクト
  • 4-4 変数の詳細
    • 4-4-1 変数の種類
    • 4-4-2 変数のデフォルト初期値
    • 4-4-3 変数のスコープ
  • 4-5 オブジェクトの寿命
  • 4-6 final変数と不変オブジェクト
    • 4-6-1 参照型のfinal変数
    • 4-6-2 final変数と不変オブジェクトの動作の違い
    • 4-6-3 堅牢なプログラムのための工夫

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-2-1 クラスの修飾子
    • 5-2-2 クラスの構成要素
  • 5-3 フィールド
    • 5-3-1 フィールド宣言
    • 5-3-2 フィールド変数とフィールドオブジェクト
    • 5-3-3 フィールド変数の初期化
    • 5-3-4 フィールド宣言の修飾子
    • 5-3-5 同一クラス内のフィールド変数のスコープ
    • 5-3-6 他のクラスからフィールド変数にアクセス
    • 5-3-7 this参照
  • 5-4 メソッド
    • 5-4-1 メソッド宣言
    • 5-4-2 メソッド宣言の修飾子
    • 5-4-3 同一クラス内のメソッドのスコープ
    • 5-4-4 他のクラスからのメソッド呼び出し
    • 5-4-5 メソッド呼び出しと引数
    • 5-4-6 ローカル変数とパラメータ変数
    • 5-4-7 可変長引数
    • 5-4-8 メソッドの返り値
    • 5-4-9 メソッドのオーバーロード
    • 5-4-10 メソッドのシグネチャ
    • 5-4-11 再帰呼び出し
  • 5-5 コンストラクタ
    • 5-5-1 コンストラクタの宣言
    • 5-5-2 コンストラクタの意義
    • 5-5-3 コンストラクタのオーバーロード
    • 5-5-4 this呼び出しとsuper呼び出し
    • 5-5-5 デフォルトコンストラクタ
    • 5-5-6 初期化ブロック
    • 5-5-7 オブジェクト初期化処理の順序
  • 5-6 staticメンバ
    • 5-6-1 クラスメンバ
    • 5-6-2 クラスフィールド(staticフィールド)
    • 5-6-3 同一クラス内のクラスフィールド変数のスコープ
    • 5-6-4 他のクラスからクラスフィールド変数にアクセス
    • 5-6-5 インスタンスフィールド変数とクラスフィールド変数
    • 5-6-6 クラスメソッド(staticメソッド)
    • 5-6-7 他のクラスからクラスメソッドの呼び出し
    • 5-6-8 クラスメソッドとインスタンスメンバ
    • 5-6-9 static初期化ブロック
    • 5-6-10 クラスをオブジェクトのように扱わないこと
  • 5-7 継承
    • 5-7-1 継承とは
    • 5-7-2 拡張継承の構文
    • 5-7-3 フィールド変数の隠蔽
    • 5-7-4 メソッドのオーバーライド
    • 5-7-5 super参照
    • 5-7-6 継承時のオブジェクト初期化処理の順序
    • 5-7-7 finalクラス
  • 5-8 抽象クラスと抽象メソッド
    • 5-8-1 テンプレートメソッドパターン
    • 5-8-2 抽象クラスの意義と拡張継承の現実解
  • 5-9 アクセス制御とカプセル化
    • 5-9-1 アクセス制御の使い分け
    • 5-9-2 カプセル化
  • 5-10 ネストしたクラス
    • 5-10-1 ネストしたクラスとは
    • 5-10-2 staticなネストしたクラス
    • 5-10-3 内部クラス(非staticなネストしたクラス)
    • 5-10-4 ローカル内部クラス
    • 5-10-5 匿名クラス
  • 5-11 クラスの設計
    • 5-11-1 パラメータ化の意識

6章 コレクションと配列

  • 6-1 モノの集まりを扱う
    • 6-1-1 配列とコレクション
  • 6-2 コレクションフレームワーク
    • 6-2-1 コレクション型オブジェクトの生成
    • 6-2-2 コレクションの具体例
    • 6-2-3 コレクションの要素の型
    • 6-2-4 変数の型をインタフェース型にする意味
  • 6-3 リスト
    • 6-3-1 リストの具象クラス
    • 6-3-2 ArrayList
    • 6-3-3 LinkedList
    • 6-3-4 リストの実装クラスの利用の指針
    • 6-3-5 リストのサーチ
  • 6-4 マップ
    • 6-4-1 HashMap
    • 6-4-2 LinkedHashMap
    • 6-4-3 TreeMap
    • 6-4-4 マップの実装クラスの利用の指針
    • 6-4-5 NavigableMap
  • 6-5 セット
  • 6-6 スタック、キュー、デック
  • 6-7 イテレータ(拡張for構文)
    • 6-7-1 コレクションと繰り返し処理
    • 6-7-2 拡張for構文
    • 6-7-3 イテレータ
    • 6-7-4 拡張for構文を使えない場合
  • 6-8 コレクションの技法
    • 6-8-1 変更不変コレクション
    • 6-8-2 Collectionsクラス
    • 6-8-3 コレクションの初期化記法
    • 6-8-4 ソート処理
    • 6-8-5 コレクションと歴史的コード
  • 6-9 配列
    • 6-9-1 配列とは
    • 6-9-2 配列の初期化
    • 6-9-3 多次元配列
    • 6-9-4 配列のコピー
    • 6-9-5 Arraysクラス
    • 6-9-6 配列とコレクションの相互変換

7章 インターフェース

  • 7-1 境界の意識と抽象化
    • 7-1-1 境界を意識する重要性
    • 7-1-2 インターフェースによる抽象化
  • 7-2 インタフェースと多態(ポリモフィズム)
    • 7-2-1 クラスとインターフェースの違い
    • 7-2-2 インターフェースを継承(実装)
    • 7-2-3 インターフェース型の変数
    • 7-2-4 多態性
    • 7-2-5 コードの依存性とインターフェース
    • 7-2-6 インターフェースと抽象クラス
  • 7-3 インタフェース宣言
    • 7-3-1 インターフェース宣言の文法
    • 7-3-2 インターフェースの修飾子
    • 7-3-3 インターフェースのメンバ
  • 7-4 インターフェースと実装クラス
    • 7-4-1 インターフェース継承の文法
    • 7-4-2 メソッドのオーバーライド
    • 7-4-3 ネストしたインターフェース
    • 7-4-4 defaultメソッドの明示的な呼び出し
    • 7-4-5 インタフェース自体の拡張継承
    • 7-4-6 多重軽症
  • 7-5 インターフェースの設計
    • 7-5-1 コールバックパターン
    • 7-5-2 多態性による条件分岐の書き換え(ストラテジパターン)

8章 ラムダ式とストリーム処理

  • 8-1 ラムダという抽象化
    • 8-1-1 挙動パラメータ
    • 8-1-2 関数型プログラミングの背景
  • 8-2 メソッド参照
    • 8-2-1 メソッド参照の文法
    • 8-2-2 関数型インタフェース
    • 8-2-3 メソッド参照の実例
  • 8-3 ラムダ式
    • 8-3-1 ラムダ式の具体例
    • 8-3-2 ラムダ式の文法
    • 8-3-3 ラムダ式の型
    • 8-3-4 ラムダ式の詳細
  • 8-4 java.util.function
    • 8-4-1 標準関数型インタフェース
  • 8-5 挙動パラメータの実践
    • 8-5-1 挙動パラメータによる遅延処理
    • 8-5-2 コレクションのforEachメソッド
  • 8-6 ストリーム処理
    • 8-6-1 ストリーム処理とは
    • 8-6-2 ストリーム処理の構造
    • 8-6-3 ストリームの生成
    • 8-6-4 ストリームからコレクションや配列を生成
    • 8-6-5 Streamインターフェース
    • 8-6-6 並列処理
    • 8-6-7 reduce処理
    • 8-6-8 collect処理
    • 8-6-9 java.util.stream.Collectors

9章 文,式,演算子

  • 9-1 Javaの文法と文
    • 9-1-1 文とは
    • 9-1-2 予約語
    • 9-1-3 識別子
    • 9-1-4 制御文
    • 9-1-5 ブロック文
    • 9-1-6 宣言文
    • 9-1-7 式文
    • 9-1-8 空文
    • 9-1-9 空白文字と改行文字
  • 9-2 Javaの演算子と式
    • 9-2-1 式の評価順序
    • 9-2-2 演算子の優先順序と結合規則
  • 9-3 数値の演算
    • 9-3-1 算術演算
    • 9-3-2 インクリメント演算とデクリメント演算
    • 9-3-3 ビット演算
  • 9-4 文字列の演算
  • 9-5 関係演算と等価演算
    • 9-5-1 同一性と同値性
  • 9-6 論理演算
    • 9-6-1 論理演算の2項演算子
    • 9-6-2 否定演算子
  • 9-7 その他の演算
    • 9-7-1 代入演算
    • 9-7-2 条件演算(3項演算子)
    • 9-7-3 new演算
    • 9-7-4 キャスト演算
    • 9-7-5 instanceof演算
    • 9-7-6 配列要素の参照演算
    • 9-7-7 フィールドまたはメソッドのアクセス演算
    • 9-7-8 メソッド呼び出し演算

10章 Javaプログラムの実行と制御構造

  • 10-1 Javaプログラムの実行
    • 10-1-1 プログラムの開始
    • 10-1-2 プログラムの実行順序
    • 10-1-3 スタックトレース
  • 10-2 java.lang.Systemクラス
  • 10-3 条件分岐
    • 10-3-1 if-else文
    • 10-3-2 if-else分のイディオム
    • 10-3-3 条件演算子(3項演算子)
    • 10-3-4 switch-case文
  • 10-4 繰り返し
    • 10-4-1 while文
    • 10-4-2 do-while文
    • 10-4-3 for文
  • 10-5 ジャンプ
    • 10-5-1 ループ処理からの脱出
    • 10-5-2 ラベルを使ったジャンプ

Part3 Java言語発展
11章 数値②

  • 11-1 浮動小数点
    • 11-1-1 浮動小数点とは
    • 11-1-2 どの浮動小数点型を使うべきか
    • 11-1-3 浮動小数点の演算
    • 11-1-4 strictfp
    • 11-1-5 浮動小数点の内部表現
    • 11-1-6 リテラル表記
  • 11-2 数値クラス(数値ラッパークラス)
    • 11-2-1 数値オブジェクトの利用
  • 11-3 ボクシング変換
    • 11-3-1 数値オブジェクトの同値性
  • 11-4 型変換
    • 11-4-1 拡大変換と縮小変換
    • 11-4-2 数値とboolean値の型変換
    • 11-4-3 整数と浮動小数点の型変換
    • 11-4-4 数値昇格
  • 11-5 ビット演算
  • 11-6 BigIntegerとBigDecimal
    • 11-6-1 BigInteger
    • 11-6-2 BigDecimal

12章 パッケージ

  • 12-1 パッケージとは
    • 12-1-1 パッケージの役割
    • 12-1-2 パッケージ名
    • 12-1-3 パッケージ宣言
    • 12-1-4 ファイルシステムとの関係
  • 12-2 インポート
    • 12-2-1 2種類のインポート文
    • 12-2-2 暗黙のインポート
    • 12-2-3 インポートと名前の衝突
    • 12-2-4 staticインポート
  • 12-3 パッケージとアクセス制御

13章 列挙型と定数と不変型

  • 13-1 リテラル表記
  • 13-2 定数定義
    • 13-2-1 定数定義の使い方
    • 13-2-2 定数定義の現実的な指針
  • 13-3 enum型
    • 13-3-1 enum型の例
    • 13-3-2 enum宣言
    • 13-3-3 enum定数の値
    • 13-3-4 enum型の振る舞い
    • 13-3-5 enum定数とswitch文
    • 13-3-6 EnumSetとEnumMap
  • 13-4 不変型
    • 13-4-1 不変型の実践方法
    • 13-4-2 日付ライブラリで学ぶ不変クラスの設計

14章 例外処理

  • 14-1 例外とエラー処理
    • 14-1-1 エラーとは
    • 14-1-2 エラー処理
    • 14-1-3 エラー処理の手法
    • 14-1-4 例外によるエラー処理
    • 14-1-5 例外の具体例
  • 14-2 例外の補足
    • 14-2-1 例外への対応コード
    • 14-2-2 try文
    • 14-2-3 catch節
    • 14-2-4 finally節
    • 14-2-5 tru-with-resources文
    • 14-2-6 try文のネスト
  • 14-3 例外の搬出
    • 14-3-1 例外搬出とメソッド実行中断
    • 14-3-2 throw文
    • 14-3-3 演算による例外送出
  • 14-4 検査例外と実行時例外
    • 14-4-1 例外クラス
    • 14-4-2 検査例外
    • 14-4-3 実行時例外
    • 14-4-4 エラー例外
    • 14-4-5 自作の例外クラス
  • 14-5 throws節
    • 14-5-1 throws節とは
    • 14-5-2 メソッドのオーバーライドとthrows節
    • 14-5-3 ラムダ式と例外
  • 14-6 系によるデザイン(assert)
    • 14-6-1 assert文
  • 14-7 例外の設計
    • 14-7-1 例外の指針
    • 14-7-2 独自の例外(アプリケーション例外)
    • 14-7-3 例外翻訳
    • 14-7-4 抑制例外
    • 14-7-5 イディオム化している実行時例外
    • 14-7-6 フレームワーク例外

15章 ジェネリック型

  • 15-1 ジェネリック型とは
    • 15-1-1 ジェネリック型の利用例
    • 15-1-2 ジェネリック型の背景
  • 15-2 ジェネリック型宣言
    • 15-2-1 ジェネリック型宣言の文法
    • 15-2-2 型変数
    • 15-2-3 ジェネリックメソッドとジェネリックコンストラクタ
  • 15-3 ジェネリック型の利用
    • 15-3-1 パラメータ化された型
    • 15-3-2 ジェネリックメソッドの呼び出し
    • 15-3-3 型引数のワイルドカード
  • 15-4 ジェネリック型の設計
    • 15-4-1 雛形としてのジェネリック型
    • 15-4-2 ジェネリック型への道
    • 15-4-3 ジェネリック型を使う条件
    • 15-4-4 ジェネリック型とパラメータ化

16章 ファイルとネットワーク

  • 16-1 I/Oストリーム処理
    • 16-1-1 JavaのI/O処理の概要
    • 16-1-2 I/Oストリームクラスの概論
  • 16-2 ファイル
    • 16-2-1 バイトI/Oストリーム処理
    • 16-2-2 標準入出力
    • 16-2-3 文字I/Oストリーム処理
    • 16-2-4 バイトI/Oストリームから文字I/Oストリームへの変換
    • 16-2-5 バッファリング
    • 16-2-6 ラムダアクセス
    • 16-2-7 バイト列I/Oストリーム
    • 16-2-8 ファイルのパス操作
    • 16-2-9 ファイルのStream処理
  • 16-3 ネットワーク(ソケット)
    • 16-3-1 ネットワークプログラミング概論
    • 16-3-2 クライアント処理
    • 16-3-3 サーバ処理
    • 16-3-4 タイムアウト処理
    • 16-3-5 並行処理サーバ
    • 16-3-6 java.nioパッケージを使うネットワーク処理

17章 スレッド

  • 17-1 スレッドの利用
    • 17-1-1 スレッドの概要
    • 17-1-2 スレッドが共有するデータ
    • 17-1-3 スレッド間で共有されないデータ
    • 17-1-4 マルチスレッドプログラムの鉄則
  • 17-2 スレッド生成
    • 17-2-1 java.lang.Threadクラス
    • 17-2-2 スレッドとRunnableインターフェース
    • 17-2-3 Threadクラスの拡張とRunnableインターフェースの実装
    • 17-2-4 スレッドプール
  • 17-3 同期処理(排他制御)
    • 17-3-1 synchronizedコード
    • 17-3-2 synchronizedメソッド
    • 17-3-3 synchronized文
    • 17-3-4 synchronizedコードの実例
    • 17-3-5 Javaのメモリモデル
    • 17-3-6 volatile修飾子と同期処理
    • 17-3-7 明示的なロック
    • 17-3-8 アトミック処理
    • 17-3-9 通知
    • 17-3-10 デッドロックと検出
    • 17-3-11 コレクションの同期処理

18章 リフレクション

  • 18-1 リフレクションとは
    • 18-1-1 リフレクションを実現するには
  • 18-2 型情報の取得
    • 18-2-1 型階層の情報
  • 18-3 オブジェクト生成
  • 18-4 オブジェクト操作
    • 18-4-1 メソッド呼び出し
    • 18-4-2 フィールド操作
  • 18-5 リフレクションの応用
    • 18-5-1 JavaBeans
    • 18-5-2 DI(Dependency Injection)
    • 18-5-3 クラスローダとホットデプロイ
    • 18-5-4 プロクシクラス

19章 アノテーション

  • 19-1 アノテーションとは
    • 19-1-1 アノテーションの書き方
    • 19-1-2 アノテーションの応用例
  • 19-2 標準アノテーション
    • 19-2-1 @Deprecated
    • 19-2-2 @SuppressWarnings
  • 19-3 アノテーション宣言
    • 19-3-1 アノテーション要素
    • 19-3-2 メタアノテーション
  • 19-4 アノテーションの適用
  • 19-5 アノテーションの応用
    • 19-5-1 プラグイン
    • 19-5-2 アノテーションとPOJO

Part4 JavaFX
20章 JavaFX概論

  • 20-1 はじめに
  • 20-2 JavaFXの歴史
  • 20-3 JavaFXプログラミング初歩
    • 20-3-1 Hello World
    • 20-3-2 パッケージング

21章 JavaFXとグラフィックス

  • 21-1 レンダリング
    • 21-1-1 グラフィックスシステム
    • 21-1-2 レンダリングループ
  • 21-2 座標系
    • 21-2-1 デカルト座標系
    • 21-2-2 複数の座標系
  • 21-3 グラフィックスAPI
    • 21-3-1 保持モードと即時モード
    • 21-3-2 JavaFX Scene Graph
    • 21-3-3 JavaFX Canvas
    • 21-3-4 FXML
  • 21-4 プリミティブ
    • 21-4-1 幾何図形
    • 21-4-2 テキスト
    • 21-4-3 画像
  • 21-5 幾何変換
    • 21-5-1 基本的な返還
    • 21-5-2 変換の合成

22章 JavaFXと対話処理

  • 22-1 イベント
    • 22-1-1 イベントの種類
    • 22-1-2 イベント処理
  • 22-2 プロパティの監視
    • 22-2-1 Java Benaとプロパティ
    • 22-2-2 JavaFX Beanとプロパティ
    • 22-2-3 プロパティの変化と無効化
    • 22-2-4 プロパティの束縛

23章 JavaFXと並行処理

  • 23-1 マルチスレッド化
    • 23-1-1 GUIとマルチスレッド
    • 23-1-2 JavaFXのスレッドルール
  • 23-2 JavaFXスレッドユーティリティ
    • 23-2-1 Platform.runLaterメソッド
    • 23-2-2 Taskクラス
    • 23-2-3 Serviceクラス

24章 JavaFXユーザインターフェース

  • 24-1 コンポーネント
    • 24-1-1 ウィンドウ
    • 24-1-2 コントロール
    • 24-1-3 メニュー
  • 24-2 レイアウト
    • 24-2-1 境界ボックス
    • 24-2-2 位置決め
    • 24-2-3 サイズ決め
    • 24-2-4 レイアウトの丸め
    • 24-2-5 自動レイアウト
  • 24-3 スキンとスタイル
    • 24-3-1 CSSとスタイル
    • 24-3-2 スキン

索引
おわりに