著者:井上 誠一郎[いのうえ・せいいちろう]
著者:永井 雅人[ながい・まさと]
シリーズ:パーフェクト・シリーズ
【目次】
はじめに(2014年9月 井上誠一郎) [003]
目次 [004-014]
Part1 Java ~ overview
1章 Javaの概要
1-1 Java概論 016
1-1-1 Javaの特徴
オブジェクト指向を意識した設計
静的型づけ
JVM
自動メモリ管理
デザインパターン
安全さ
1-1-2 JVM
1-1-3 Javaの歴史
1-2 Javaプログラミング初歩 018
1-2-1 本書サンプルコードのスタイル
1-3 設計と抽象化 020
Part 2 Java 言語基礎
2章 文字と文字列
2-1 文字列とは 022
2-2 文字列の操作 022
2-2-1 Stringクラス
2-2-2 Stringクラスの使用例
文字列の長さ
文字列処理の典型的なバグ
2-2-3 文字列リテラル
文字列のエスケープ処理
文字列と改行
2-2-4 StringBuilderクラス
書き換え可能文字列
StringBuilderオブジェクトの文字列書き換え
StringBuilderの注意点
StringクラスとStringBuilderクラス
StringオブジェクトとStringBuilderオブジェクトの相互互換
2-2-5 文字列の結合
文字列結合の注意と効率
joinメソッド
2-2-6 文字列の比較
文字列比較の注意
文字列リテラルの同値性
StringとStringBuilderの同値比較
StringBuilder同士の同値比較
2-2-7 文字列の大小比較とソート処理
compareToメソッド
2-2-8 数値と文字列の相互変換
数値から文字列への変換
10進数以外への変換
数値の内部表現への変換
文字列から数値への変換
COLUMN 文字列の大小関係 037
2-2-9 toStringメソッド
2-2-10 文字列の書式処理
2-3 文字 042
2-3-1 文字とは
2-3-2 文字リテラル
2-3-3 文字と文字列
2-3-4 文字と文字列の変換
2-3-5 文字とコードポイント
2-4 バイトと文字 046
2-4-1 バイトとは
バイト列
2-4-2バイト列と文字列の変換
UTF-8 のバイト列
3章 数値
3-1 整数 049
3-1-1 整数型
3-1-2 ビット長と値の範囲
ビットとは
ビット長と値の範囲
3-1-3 桁あふれ
3-1-4 リテラル表記
基数
3-1-5 文字と数値
文字と数値の相互変換
3-1-6 複数の整数型がある理由
効率性
互換性
文字の扱い
3-1-7 整数型の使い分けの指針
byte、char型
short、int、long型
3-2 整数の演算 057
3-2-1 四則演算
桁あふれの回避
3-2-2 剰余
3-2-3 符号反転
3-2-4 インクリメントとデクリメント
3-2-5 ビット演算
3-3 型变换 060
3-3-1 拡大変換と縮小変換
3-3-2 キャスト
コンパイルエラーになるキャスト
型変換と符合
char型との型変換
演算時の型変換(昇格)
リテラル値の特別な型変換
3-4 ブーリアン(真偽値) 066
3-4-1 ブーリアン型
ブーリアンと制御文
3-4-2 ブーリアン型の注意点
論理演算の書き換え
4章 変数とオブジェクト
4-1 基本型と参照型 071
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 オブジェクト生成と代入 079
4-2-1 new式によるオブジェクト生成
4-2-2 参照型変数の代入
参照の代入の動作
4-2-3 基本型変数の代入
4-2-4 メソッド呼び出し時などの代入
4-2-5 null参照
nullチェック
4-2-6 Optional型
多段のnullチェックのOptional型での書き換え
4-2-7 変数を介さないオブジェクトの操作
4-3 変数と型 089
4-3-1 変数型と代入可能オブジェクト
変数の型とオブジェクトの型の関係
・変数の型とオブジェクトの型の規則①
・変数の型とオブジェクトの型の規則②
・変数の型とオブジェクトの型の規則③
・変数の型とオブジェクトの型の規則④
4-4 変数の詳細 092
4-4-1 変数の種類
4-4-2 変数のデフォルト初期値
4-4-3 変数のスコープ
ローカル変数のスコープ
ブロックスコープ
シャドーイング
パラメータ変数のスコープ
フィールド変数のスコープ
4-5 オブジェクトの寿命 096
4-6 final変数と不変オブジェクト 096
4-6-1 参照型のfinal変数
4-6-2 final変数と不変オブジェクトの動作の違い
4-6-3 堅牢なプログラムのための工夫
5章 クラス
5-1 クラスとオブジェクト 099
5-1-1 クラスの概論
5-1-2 フィールドとメソッド
フィールドの概要
メソッドの概要
5-1-3 オブジェクト
5-1-4 クラスの役割
5-1-5 オブジェクト、インスタンス、クラス、型、雛型
オブジェクトとインスタンス
Javaのオブジェクト
型と雛型
Javaの型
5-1-6 既存クラスの利用
オブジェクトを生成
new式
5-1-7 オブジェクトのライフサイクル管理とファクトリパターン
ファクトリパターン
5-1-8 クラス自体を利用(ユーティリティクラス)
ユーティリティクラス
5-2 クラス宣言 109
5-2-1クラスの修飾子
5-2-2 クラスの構成要素
5-3 フィールド 111
5-3-1 フィールド宣言
5-3-2 フィールド変数とフィールドオブジェクト
5-3-3 フィールド変数の初期化
5-3-4 フィールド宣言の修飾子
5-3-5 同一クラス内のフィールド変数のスコープ
5-3-6 他のクラスからフィールド変数にアクセス
5-3-7 this参照
5-4 メソッド 115
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 コンストラクタ 125
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メンバ 131
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 継承 139
5-7-1 継承とは
複数のクラスの共通処理
クラスの2種類の継承
拡張継承と委譲の使い分け
拡張継承と多態
コードの再利用と拡張継承
5-7-2 拡張継承の構文
5-7-3 フィールド変数の隠蔽
5-7-4 メソッドのオーバーライド
@Overrideアノテーション
クラスメソッドとオーバーライド
5-7-5 super参照
5-7-6 継承時のオブジェクト初期化処理の順序
super呼び出し
5-7-7 final 257
5-8 抽象クラスと抽象メソッド 148
5-8-1 テンプレートメソッドパターン
5-8-2 抽象クラスの意義と拡張継承の現実解
5-9 アクセス制御とカプセル化 150
5-9-1 アクセス制御の使い分け
アクセス制御の注意
5-9-2 カプセル化
5-10 ネストしたクラス 152
5-10-1 ネストしたクラスとは
5-10-2 staticなネストしたクラス
クラスのネストとエンクロージングクラス
ネストしたクラスのアクセス制御
ネストしたクラスのアクセス方法
ネストしたクラスの用途
5-10-3 内部クラス(非staticなネストしたクラス)
5-10-4 ローカル内部クラス
5-10-5 匿名クラス
5-11 クラスの設計 160
5-11-1 パラメータ化の意識
6章 コレクションと配列
6-1 モノの集まりを扱う 162
6-1-1 配列とコレクション
6-2 コレクションフレームワーク 163
6-2-1 コレクション型オブジェクトの生成
6-2-2 コレクションの具体例
6-2-3 コレクションの要素の型
6-2-4 変数の型をインターフェース型にする意味
6-3 リスト 166
6-3-1 リストの具象クラス
ArrayListの特徴
LinkedListの特徴
6-3-2 ArrayList
6-3-3 LinkedList
6-3-4 リストの実装クラスの利用の指針
6-3-5 リストのサーチ
ソート済みのリストのサーチ
6-4 マップ 172
6-4-1 HashMap
ハッシュ関数
HashMapの内部動作
HashMapの性能
HashMapのコード例
6-4-2 LinkedHashMap
LinkedHashMapの内部動作
6-4-3 TreeMap
TreeMapの内部動作
TreeMapの性能
2分探索木のすべての要素
6-4-4 マップの実装クラスの利用の指針
6-4-5 NavigableMap
6-5 セット 181
6-6 スタック、キュー、デック 183
6-7 イテレータ(拡張for構文) 184
6-7-1 コレクションと繰り返し処理
6-7-2 拡張for構文
6-7-3 イテレータ
イテレータの役目
イテレータによる抽象化
マップのイテレータ
6-7-4 拡張for構文を使えない場合
順序のあるイテレータ
イテレーションの一時中断と再開
イテレーション中に要素を増減する処理の典型的なバグ
イテレーション中に要素を増減する処理
6-8 コレクションの技法 192
6-8-1 変更不能コレクション
6-8-2 Collections クラス
6-8-3 コレクションの初期化記法
6-8-4 ソート処理
比較基準を渡すソート
並列ソート
6-8-5 コレクションと歴史的コード
6-9 配列 196
6-9-1 配列とは
配列の実例
参照型配列の要素
配列のイテレーション
6-9-2 配列の初期化
6-9-3 多次元配列
多次元配列の初期化子
多次元配列の要素列挙
6-9-4 配列のコピー
6-9-5 Arraysクラス
6-9-6 配列とコレクションの相互変換
配列からListオブジェクトに変換
Collectionオブジェクトから配列に変換
7章 インターフェース
7-1 境界の意識と抽象化 205
7-1-1 境界を意識する重要性
7-1-2 インターフェースによる抽象化
7-2 インターフェースと多態(ポリモフィズム) 206
7-2-1 クラスとインターフェースの違い
7-2-2 インターフェースを継承(実装)
7-2-3 インターフェース型の変数
メソッドの引数をインタフェース型にする意義
7-2-4 多態性
7-2-5 コードの依存性とインターフェース
7-2-6 インターフェースと抽象クラス
7-3 インターフェース宣言 213
7-3-1 インターフェース宣言の文法
7-3-2 インターフェースの修飾子
7-3-3 インターフェースのメンバ
メソッド宣言
defaultメソッドとstaticメソッドの指針
インタフェース定数
メンバのアクセス制御
7-4 インターフェースと実装クラス 217
7-4-1 インターフェース継承の文法
7-4-2 メソッドのオーバーライド
7-4-3 ネストしたインターフェース
7-4-4 defaultメソッドの明示的な呼び出し
7-4-5 インターフェース自体の拡張継承
7-4-6 多重継承
多重継承でのdefaultメソッド
多重継承でのインタフェース定数
コンパイルエラーにならない多重継承
7-5 インターフェースの設計 224
7-5-1 コールバックパターン
イベントドリブンコード
依存方向の意識
7-5-2 多態性による条件分岐の書き換え(ストラテジパターン)
8章 ラムダ式とストリーム処理
8-1 ラムダという抽象化 231
8-1-1 挙動パラメータ
8-1-2 関数型プログラミングの背景
関数とは
関数型プログラミングの利点
Javaで書く関数型コード
8-2 メソッド参照 233
8-2-1 メソッド参照の文法
メソッド参照のからくり
8-2-2 関数型インターフェース
メソッドの型
SAM(Single Abstract Method)インタフェース
@FunctionalInterfaceアノテーション
8-2-3 メソッド参照の実例
継承とメソッド参照
8-3 ラムダ式 239
8-3-1 ラムダ式の具体例
8-3-2 ラムダ式の文法
8-3-3 ラムダ式の型
8-3-4 ラムダ式の詳細
ラムダ式とthis参照
ラムダ式とローカル変数
ラムダ式と変数のスコープ
ラムダ式とクロージャ
ラムダ式と例外
8-4 java.util.function 245
8-4-1 標準関数型インターフェース
標準関数型インターフェースの使用例
基本型のための標準関数型インターフェース
演算的な標準関数型インターフェース
2引数の標準関数型インターフェース
関数合成
引数の多い標準関数型インターフェース
代表的な標準関数型インターフェース
8-5 挙動パラメータの実践 251
8-5-1 挙動パラメータによる遅延処理
8-5-2 コレクションのforEachメソッド
8-6 ストリーム処理 253
8-6-1 ストリーム処理とは
8-6-2 ストリーム処理の構造
ストリーム処理の注意
8-6-3 ストリームの生成
Streamのファクトリメソッド
無限ストリーム
8-6-4 ストリームからコレクションや配列を生成
8-6-5 Streamインターフェース
ストリーム処理の実装パターン
基本型数値ストリーム
数値ストリームとの相互変換
8-6-6 並列処理
並列処理の内部
オーダー処理とソート処理
8-6-7 reduce処理
reduceメソッド
8-6-8 collect処理
collect処理の実例
複数データソースの同時collect処理
8-6-9 java.util.stream.Collectors
groupingBy処理とpartitioningBy処理
9章 文、式、演算子
9-1 Javaの文法と文 272
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の演算子と式 282
9-2-1 式の評価順序
9-2-2 演算子の優先順序と結合規則
9-3 数値の演算 283
9-3-1 算術演算
9-3-2 インクリメント演算とデクリメント演算
前置演算子と後置演算子の注意
左辺値の注意
9-3-3 ビット演算
9-4 文字列の演算 285
文字列型変数の規則
9-5 関係演算と等価演算 287
関係演算子の注意
9-5-1同一性と同値性
参照型の比較
基本型の比較
9-6 論理演算 289
9-6-1 論理演算の2項演算子
遅延評価
9-6-2 否定演算子
9-7 その他の演算 291
9-7-1 代入演算
9-7-2 条件演算(3項演算子)
9-7-3 new演算
9-7-4 キャスト演算
9-7-5 instanceof演算
instanceof演算子の目的
9-7-6 配列要素の参照演算
9-7-7 フィールドまたはメソッドのアクセス演算
9-7-8 メソッド呼び出し演算
10章 Javaプログラムの実行と制御構造
10-1 Javaプログラムの実行 295
10-1-1 プログラムの開始
10-1-2 プログラムの実行順序
10-1-3 スタックトレース
10-2 java.lang.System クラス 298
10-3 条件分岐 299
10-3-1 if-else文
if-else文の動作
if節およびelse節に書く文の注意
10-3-2 if-else文のイディオム
連続したelse節のイディオム
定数条件式
10-3-3 条件演算子(3項演算子)
条件演算子のネスト
if-else文と条件演算子の比較
条件演算子の型
10-3-4 switch-case文
switch文の動作
if-else文とswitch文の比較
文字列のswitch文
switch文とnull
10-4 繰り返し 309
10-4-1 while文
無限ループ
ループの抜け方
10-4-2 do-while文
10-4-3 for文
for文のイディオム
ループ変数
10-5 ジャンプ 316
10-5-1 ループ処理からの脱出
break文
continue文
10-5-2 ラベルを使ったジャンプ
Part3 Java言語発展
11章 数値②
11-1 浮動小数点数 320
11-1-1 浮動小数点数とは
11-1-2 どの浮動小数点数型を使うべきか
11-1-3 浮動小数点数の演算
11-1-4 strictfp
11-1-5 浮動小数点数の内部表現
11-1-6 リテラル表記
11-2 数値クラス(数値ラッパークラス) 326
11-2-1 数値オブジェクトの利用
booleanクラスの注意点
11-3 ボクシング変換 328
ボクシング変換の注意
11-3-1 数値オブジェクトの同値性
ボクシング変換と同値性判定
11-4 型変換 330
11-4-1 拡大変換と縮小変換
11-4-2 数値とboolean値の型変換
11-4-3 整数と浮動小数点数の型変換
11-4-4 数値昇格
11-5 ビット演算 332
11-6 BigInteger BigDecimal 332
11-6-1 BigInteger
11-6-2 BigDecimal
BigDecimalの比較
12章 パッケージ
12-1 パッケージとは 335
12-1-1 パッケージの役割
名前空間
意味的なまとまりの管理
アクセス制御
12-1-2 パッケージ名
パッケージ名の管理
パッケージ名の実際
12-1-3 パッケージ宣言
12-1-4 ファイルシステムとの関係
12-2 インポート 339
import文の内部動作
12-2-1 2種類のインポート文
12-2-2 暗黙のインポート
12-2-3 インポートと名前の衝突
単純名の名前解決
12-2-4 staticインポート
12-3 パッケージとアクセス制御 342
13章 列挙型と定数と不変型
13-1 リテラル表記 344
13-2 定数定義 345
13-2-1 定数定義の使い方
13-2-2 定数定義の現実的な指針
13-3 enum型 348
13-3-1 enum W0 151
13-3-2 enum宣言
13-3-3 enum定数の値
13-3-4 enum型の振る舞い
enum定数の列挙
13-3-5 enum 定数とswitch文
13-3-6 EnumSetとEnumMap
13-4 不変型 354
13-4-1 不変型の実装方法
不変クラスの注意
13-4-2 日付ライブラリで学ぶ不変クラスの設計
日付ライブラリの設計パターン
14章 例外処理
14-1 例外とエラー処理 360
14-1-1 エラーとは
14-1-2 エラー処理
14-1-3 エラー処理の手法
エラーハンドと例外
14-1-4 例外によるエラー処理
例外の利点
14-1-5 例外の具体例
検査例外の具体例
実行時例外の具体例
14-2 例外の捕捉 368
14-2-1 例外への対応コード
14-2-2 try文
try-with-resources文
14-2-3 catch節
catch節の引数型
14-2-4 finally節
14-2-5 try-with-resources文
リソースとは
リソース解放処理
14-2-6 try文のネスト
14-3 例外の送出 377
14-3-1 例外送出とメソッド実行中断
14-3-2 throw文
14-3-3 演算による例外送出
14-4 検査例外と実行時例外 379
14-4-1 例外クラス
14-4-2 検査例外
14-4-3 実行時例外
14-4-4 エラー例外
14-4-5 自作の例外クラス
スタックトレース
14-5 throws節 382
14-5-1 throws節とは
例外の伝播
14-5-2 メソッドのオーバーライドとthrows節
14-5-3 ラムダ式と例外
14-6 契約によるデザイン(assert) 385
14-6-1 assert文
assert文の利用
assert文の意義
メソッドの引数チェックのイディオム
14-7 例外の設計 387
14-7-1 例外の指針
14-7-2 独自の例外(アプリケーション例外)
14-7-3 例外翻訳
原因例外
14-7-4 抑制例外
14-7-5 イディオム化している実行時例外
14-7-6 フレームワーク例外
実行時例外の基本的な利用目的
フレームワークなどで有効に利用できる実行時例外
15章 ジェネリック型
15-1 ジェネリック型とは 393
15-1-1 ジェネリック型の利用例
ジェネリック型の形式
15-1-2 ジェネリック型の背景
15-2 ジェネリック型宣言 395
15-2-1 ジェネリック型宣言の文法
15-2-2 型変数
型変数の使える場所
境界のある型パラメータ
15-2-3 ジェネリックメソッドとジェネリックコンストラクタ
15-3 ジェネリック型の利用 401
15-3-1 パラメータ化された型
ダイアモンド演算子
複雑なパラメータ化された型の回避
15-3-2 ジェネリックメソッドの呼び出し
15-3-3 型引数のワイルドカード
ワイルドカードこ動作
15-4 ジェネリック型の設計 404
15-4-1 雛形としてのジェネリック型
ジェネリック型と多態性
15-4-2 ジェネリック型への道
15-4-3 ジェネリック型を使う条件
入力と出力の関係
15-4-4 ジェネリック型とパラメータ化
16章 ファイルとネットワーク
16-1 I/Oストリーム処理 410
16-1-1 JavaのI/O処理の概要
I/Oストリームと抽象化
16-1-2 I/Oストリームクラスの概論
I/Oストリームクラスの例外
16-2 ファイル 412
16-2-1 バイトI/Oストリーム処理
16-2-2 標準入出力
java.io.Consoleクラス
16-2-3 文字I/0ストリーム処理
16-2-4 バイトI/Oストリームから文字I/0ストリームへの変換
16-2-5 バッファリング
バッファリングI/Oストリーム
バッファリングの方針
16-2-6 ランダムアクセス
FileChannelとファイルポジション
16-2-7 バイト列1/0ストリーム
16-2-8 ファイルのバス操作
java.nio.file.Filesユーティリティクラス
ファイルの変更監視
16-2-9 ファイルのStream処理
16-3 ネットワーク(ソケット) 426
16-3-1 ネットワークプログラミング概論
ネットワークプログラミングの基本
サーバとクライアント
ソケットと4つ組
16-3-2 クライアント処理
16-3-3 サーバ処理
16-3-4 タイムアウト処理
16-3-5 並行処理サーバ
16-3-6 java.nioパッケージを使うネットワーク処理
17章 スレッド
17-1 スレッドの利用 437
17-1-1 スレッドの概要
マルチスレッドプログラミング
17-1-2 スレッドが共有するデータ
17-1-3 スレッド間で共有されないデータ
17-1-4 マルチスレッドプログラムの鉄則
17-2 スレッド生成 441
17-2-1 java.lang.Thread クラス
17-2-2 スレッドとRunnableインターフェース
Runnableインターフェースとラムダ式
17-2-3 Threadクラスの拡張とRunnableインターフェースの実装
17-2-4 スレッドプール
Callableインターフェース
FutureとCompletableFuture
マルチスレッド版並行処理サーバ
17-3 同期処理(排他制御) 453
17-3-1 synchronizedコード
モニタロック
17-3-2 synchronizedメソッド
17-3-3 synchronized文
synchronizedメソッドとsynchronized文の比較
17-3-4 synchronized コードの実例
synchronizedコードによる修正
モニタロックを変えてみる
synchronizedの範囲と実行速度
同期処理の注意点
ラッパークラスの注意
17-3-5 Javaのメモリモデル
synchronizedコード
volatile修飾子
17-3-6 volatile修飾子と同期処理
17-3-7 明示的なロック
ReadWriteLock
17-3-8 アトミック処理
アトミック処理と実行速度
17-3-9 通知
通知処理のコードの構造
通知処理の具体例
タスクキューモデル
17-3-10 デッドロックと検出
デッドロックの仕組み
デッドロックの監視
17-3-11 コレクションの同期処理
並行コレクション
18章 リフレクション
18-1 リフレクションとは 472
18-1-1 リフレクションを実現するには
Classクラス
Classオブジェクトの生成
Classオブジェクトの参照
18-2 型情報の取得 477
18-2-1 型階層の情報
18-3 オブジェクト生成 479
18-4 オブジェクト操作 480
18-4-1 メソッド呼び出し
18-4-2 フィールド操作
18-5 リフレクションの応用 482
18-5-1 JavaBeans
Beanのプロパティ
18-5-2 DI (Dependency Injection)
DIの役割
18-5-3 クラスローダとホットデプロイ
クロスローダの役割
ホットデプロイ
クラスローダの具体例
18-5-4 プロクシクラス
19章 アノテーション
19-1 アノテーションとは 490
19-1-1 アノテーションの書き方
19-1-2 アノテーションの応用例
構文補助
宣言的プログラミング
19-2 標準アノテーション 492
19-2-1 @Deprecated
19-2-2 @SuppressWarnings
19-3 アノテーション宣言 494
19-3-1 アノテーション要素
19-3-2 メタアノテーション
Retentionアノテーション
Targetアノテーション
19-4 アノテーションの適用 498
19-5 アノテーションの応用 500
19-5-1 プラグイン
19-5-2 アノテーションとPOJO
Part 4 JavaFX
20章 JavaFX概論
20-1 はじめに 506
20-2 JavaFXの歴史 506
20-3 JavaFXプログラミング初歩 507
20-3-1 Hello World
20-3-2 パッケージング
21章 JavaFXとグラフィックス
21-1 レンダリング 509
21-1-1 グラフィックスシステム
21-1-2 レンダリングループ
21-2 座標系 510
21-2-1 デカルト座標系
21-2-2 複数の座標系
21-3 グラフィックスAPI 511
21-3-1 保持モードと即時モード
21-3-2 JavaFX Scene Graph
21-3-3 JavaFX Canvas
21-3-4 FXML
21-4 プリミティブ 515
21-4-1 幾何図形
線分
ポリライン
多角形
矩形
楕円
円
楕円弧
楕円扇形
楕円弓形
カスタム図形
21-4-2 テキスト
フォント
アンチエイリアス
書字方向
合字/カーニング
21-4-3 画像
読み込みのバックグラウンド化
ピクセルデータへのアクセス
21-5 幾何変換 522
21-5-1 基本的な変換
平行移動
スケーリング
回転
21-5-2 変換の合成
平行移動
スケーリング
回転
22章 JavaFXと対話処理
22-1 イベント 527
22-1-1 イベントの種類
22-1-2 イベント処理
22-2 プロパティの監視 530
22-2-1 Java Beanとプロパティ
22-2-2 JavaFX Beanとプロパティ
22-2-3 プロパティの変化と無効化
22-2-4 プロパティの束縛
23章 JavaFXと並行処理
23-1 マルチスレッド化 541
23-1-1 GUIとマルチスレッド
23-1-2 JavaFXのスレッドルール
23-2 JavaFXスレッドユーティリティ 544
23-2-1 Platform.runLaterメソッド
23-2-2 Taskクラス
23-2-3 Serviceクラス
24章 JavaFXユーザインターフェース
24-1 コンポーネント 551
24-1-1 ウィンドウ
スタイル
モーダリティ
オーナーウィンドウ
24-1-2 コントロール
ボタン
ラジオボタン
チェックボックス
ラベル
テキストフィールド
テキストエリア
リスト
コンボボックス
24-1-3 メニュー
ドロップダウンメニュー
コンテキストメニュー
アクセラレータ
ニーモニック
24-2 レイアウト 559
24-2-1 境界ボックス
24-2-2 位置決め
layoutXとlayoutYプロパティ
relocateメソッド
24-2-3 サイズ決め
24-2-4 レイアウトの丸め
24-2-5 自動レイアウト
StackPane
HBox
VBox
FlowPane
TilePane
GridPane
AncorPane
24-3 スキンとスタイル 571
24-3-1 CSSとスタイル
CSSセレクタとパターンマッチング
オブジェクト共通スタイル
特定オブジェクトのスタイル
24-3-2 スキン
スキンの実装
スタイルの指定可能化
索引 [585-590]
おわりに(井上誠一郎 永井雅人) [591]
【メモランダム】
・「ありえるえりあ」より。割愛された部分が公開されている。
国際化プログラミング(書籍「パーフェクトJava」:「国際化」の章の原稿の後半) — ありえるえりあ
書籍「パーフェクトJava」に掲載予定だった「国際化」の章の原稿の後半です。「パーフェクトJava」にはページ数の関係で掲載しませんでした。〔……〕
【抜き書き】
・仕様・規約について(p.78)。
コーディング規約は正しさに意味があるのではなく統一に意味があります。〔……〕規約が気に入らないからといって独断で規約を破るような人はプログラミングをすべきではありません。
・コラム(p.185)でも教え。
COLUMN イディオム(決まりごと)を使う価値
些細なコードは決まりごとに従い頭から追い出すのはプログラミングで重要です。ここにイディオムを使う価値があります。
イディオムは読み手の余計な負担も減らします。イディオムから外れたコードを書くと、何か特別な意図があると読み手に勘ぐらせる危険があります。逆に言えば、特別な意味がある場合、イディオムから外れたコードを書いて読み手の関心をひけます。
・ 「6章 コレクションと配列」冒頭(p.162)から。
モノの集まりを1つの対象物とみなして、モノの集まりそのものに対して操作を行う感覚は、プログラミングの上達のために欠かせない感覚の1つです。モノの集まりに対する処理ををきれいに書けると、プログラミングの見通しが良くなります[注1]。
[注1] 私見ですが、オブジェクト指向がわからなくてもそれなりのコード書けますが、モノの集まりに対する操作を意識できなければ、まともなコードが書けるとは思えません。