パーフェクトJava 改訂2版


改訂2版 パーフェクトJava


技術評論社


著者:井上誠一郎、永井雅人


はじめに

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-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 スキン

索引
おわりに

書籍目次

Posted by shi-n