contents memorandum はてな

目次とメモを置いとく場

『スッキリわかるJava入門[第3版]』(中山清喬, 国本大悟[著] インプレス 2019//2011)

著者:中山 清喬[なかやま・きよたか]
著者:国本 大悟[くにもと・だいご]
執筆協力:飯田 理恵子[いいだ・りえこ]
執筆協力:部坂 征司[へさか・せいじ] ITコーディネータ
監修:株式会社フレアリンク
イラスト:高田ゲンキ[たかだ・げんき](1976-) イラストレーター。 
カバーデザイン:阿部 修[あべ・おさむ] 
カバー制作:高橋 結花[たかはし・ゆか]
カバー制作:鈴木 薫[すずき・かおる]
NDC:007.64 情報学.情報科学 >> プログラミング


スッキリわかるJava入門 第3版
スッキリわかるJava入門 第3版 - インプレスブックス



【目次】
まえがき(著者) [003]
dokojavaの使い方 [004]
sukkiri.jpについて [005]
CONTENTS [006-012]
本書の見方 [013]


第0章 Javaをはじめよう 015
0.1 ようこそJavaの世界へ 016
  0.1.1 Javaを使ってできること
  0.1.2 一緒にJavaを学ぶ仲間たち
0.2 はじめてのプログラミング 018
  0.2.1 プログラミングの準備をしよう
  0.2.2 サンプルプログラムを動かしてみよう
  0.2.3 画面に好きな文字を表示させよう
  0.2.4 たくさんの文章を表示しよう
  0.2.5 計算させてみよう
  0.2.6 変数を使ってみよう
  0.2.7 プログラミング体験終えて


  第I部 ようこそJavaの世界へ 029

第1章 プログラムの書き方 
1.1 Javaによる開発の基礎知識 032
  1.1.1 開発の流れ
  1.1.2 開発環境の整備

1.2 Javaプログラムの基本構造 036
  1.2.1 プログラムの骨格
  1.2.2 プログラムの書き始め方
  1.2.3 インデント
  1.2.4 コメント
  1.2.5 mainメソッドの中身

1.3 変数宣言の文 046
  1.3.1 変数宣言の文
  1.3.2 変数の名前
  1.3.3 データ型
  1.3.4 変数の初期化
  1.3.5 定数の利用

1.4 第1章のまとめ 057
1.5 練習問題 058
1.6 練習問題の解答 059


第2章 式と演算子
2.1 計算の文 062
  2.1.1 計算の文とは?
  2.1.2 式の構成要素
2.2 オペランド 064
  2.2.1 リテラル
  2.2.2 エスケープシーケンス[escape sequence]
2.3 評価のしくみ 068
  2.3.1 評価の結果
  2.3.2 優先順位
  2.3.3 結合規則
2.4 演算子 072
  2.4.1 算術演算子
  2.4.2 文字列結合演算子
  2.4.3 代入演算子
  2.4.4 インクリメント/デクリメント演算子
2.5 型の変換 077
  2.5.1 3種類の型変換
  2.5.2 代入時の自動型変換
  2.5.3 強制的な型変換
  2.5.4 演算時の自動型変換
2.6 命令実行の文 086
  2.6.1 命令実行の文とは?
  2.6.2 画面に文字を表示する命令
  2.6.3 大きいほうの数値を代入する命令
  2.6.4 文字列を数値に変換する命令
  2.6.5 乱数を生み出して代入する命令
  2.6.6 キーボードから1行の入力を受け取る命令
2.7 第2章のまとめ 094
2.8 練習問題 095
2.9 練習問題の解答 097


第3章 条件分岐と繰り返し 
3.1 プログラムの流れ 100
  3.1.1 代表的な制御構文
  3.1.2 分岐を体験する
  3.1.3 繰り返しを体験する
  3.1.4 制御構文の構成要素
3.2 ブロックの書き方 107
  3.2.1 ブロックとは
3.3 条件式の書き方 109
  3.3.1 条件式とは
  3.3.2 if文や while文の正体
  3.3.3 文字列の比較
  3.3.4 論理演算子を用いた複雑な条件式
3.4 分岐構文のバリエーション 116
  3.4.1 3種類のif構文
    if-else 構文(基本形)
    ifのみの構文
    if-else if-else構文
  3.4.2 switch文による分岐
  3.4.3 break文を書き忘れると?
3.5 繰り返し構文のバリエーション 124
  3.5.1 2種類のwhile文
  3.5.2 for文による繰り返し
  3.5.3 for文の各部の意味
  3.5.4 ループ変数
  3.5.5 複雑なfor文
3.6 制御構文の応用 131
  3.6.1 制御構造のネスト
  3.6.2 繰り返しの中断
  3.6.3 無限ループ
3.7 第3章のまとめ 134
3.8 練習問題 135
3.9 練習問題の解答 138


第4章 配列
4.1 配列のメリット 144
  4.4.1 変数が持つ不便さ
  4.4.2 配列とは
4.2 配列の書き方 148
  4.2.1 配列の作成
  4.2.2 配列の利用方法
  4.2.3 配列の初期化
  4.2.4 省略記法
4.3 配列と例外 154
  4.3.1範囲外要素の利用による例外の発生
4.4 配列のデータをまとめて扱う 156
  4.4.1 配列とfor文
  4.4.2 パターン1 ループによる全要素の利用
  4.4.3 パターン2 ループによる集計
  4.4.4 パターン3 添え字に対応した情報の利用
  4.4.5 拡張for文
4.5 配列の舞台裏 164
  4.5.1 配列を理解する
  4.5.2 メモリと変数
  4.5.3 メモリと配列
  4.5.4 配列を複数の変換で参照する
4.6 配列の後片付け 168
  4.6.1 ガベージコレクション
  4.6.2 null
  4.6.3 Null Pointer Exception
4.7 多次元の配列 172
  4.7.1 多次元配列とは?
4.8 第4章のまとめ 175
4.9 練習問題 176
4.10 練習問題の解答 178


第5章 メソッド 
5.1 メソッドとは 182
  5.1.1 メソッドを利用するメソッド
  5.1.2 メソッドの定義
  5.1.3 メソッドの呼び出し
  5.1.4 mainメソッド以外からのメソッドの呼び出し
  5.1.5 メソッドにまつわる2つの立場
5.2 引数の利用 192
  5.2.1 引数〔ひきすう〕とは
  5.2.2 1つの引数を渡す例
  5.2.3 複数の引数を渡す例
  5.2.4 仮引数と実引数
  5.2.5 変数のスコープとローカル変数
5.3 戻り値の利用 200
  5.3.1 戻り値とは
  5.3.2 戻り値を受け取る
  5.3.3 戻り値をそのまま使う
  5.3.4 return文の注意点
5.4 オーバーロードの利用 205
  5.4.1 類似する複数のメソッドを定義する
5.5 引数や戻り値に配列を用いる 209
  5.5.1 引数に配列を用いる
  5.5.2 値渡しと参照渡し
  5.5.3 戻り値に配列を用いる
5.6 コマンドライン引数 215
  5.6.1 コマンドライン引数
5.7 第5章のまとめ 217
5.8 練習問題 218
5.9 練習問題の解答 220


第6章 複数クラスを用いた開発
6.1 ソースファイルを分割する 224
  6.1.1 1つのソースファイルによる開発の限界
  6.1.2 計算機プログラムを分割しよう
6.2 複数クラスで構成されるプログラム 229
  6.2.1 JDKで開発をしてみよう
  6.2.2 複数クラスのコンパイル
  6.2.3 プログラムの完成品
  6.2.4 プログラムの実行方法
6.3 パッケージを利用する 233
  6.3.1 クラスが増えすぎたら…どうしよう?
  6.3.2 パッケージを含むクラス名を指定する
  6.3.3 完全限定クラス名の入力を省略する
6.4 パッケージに属したクラスの実行方法 241
  6.4.1 実行クラス名の正しい指定
  6.4.2 クラス名だけでクラスファイルを探し出すためのしくみ
  6.4.3 クラスパスの指定方法
  6.4.4 クラスパスで指定できる対象
  6.4.5 クラスファイルの正しい配置
6.5 名前空間 250
  6.5.1 パッケージを使うもう1つのメリット
  6.5.2 パッケージ名自体の衝突を避ける方法
6.6 Java API について学ぶ 255
  6.6.1 世界中の人々の協力で完成してきたHelloWorld
  6.6.2 APIで提供されるパッケージ
  6.6.3 APIリファレンスの読み方
6.7 第6章のまとめ 262
6.8 練習問題 263
6.9 練習問題の解答 265


  第II部 すっきり納得オブジェクト指向 269

第7章 オブジェクト指向をはじめよう 
7.1 オブジェクト指向を学ぶ理由 272
  7.1.1 ソフトウェア開発の新たな課題
  7.1.2 オブジェクト指向プログラミングをマスターしよう
  7.1.3 オブジェクト指向を学ぶコツ
7.2 オブジェクト指向の定義と効果 277
  7.2.1 オブジェクト指向の定義
  7.2.2 オブジェクト指向のメリット
7.3 オブジェクト指向の全体像と本質 281
  7.3.1 オブジェクト指向と現実世界
  7.3.2 手続き型プログラミングとの違い
  7.3.3 開発時に作るクラス,実行時に動くオブジェクト
  7.3.4 オブジェクト指向における開発者の役割
  7.3.5 オブジェクト指向の本質
7.4 オブジェクトと責務 287
  7.4.1 サッカーで考えるオブジェクト指向
  7.4.2 オブジェクトの姿
  7.4.3 オブジェクトのふるまいと相互作用
7.5 オブジェクト指向の3大機能と今後の学習 293
  7.5.1 3大機能とその位置付け
  7.5.2 以降の章の学び方
7.6 第7章のまとめ 297
7.7 練習問題 298
7.8 練習問題の解答 299


第8章 インスタンスとクラス
8.1 仮想世界の作り方 302
  8.1.1 オブジェクトを生み出す手順
  8.1.2 クラスとオブジェクトが別である理由
  8.1.3 オブジェクトという用語のあいまいさ
  8.1.4 プログラムに登場する2種類のクラス
8.2 クラスの定義方法 309
  8.2.1 登場人物クラスの作り方
  8.2.2 クラスの宣言方法
  8.2.3 属性の宣言方法
  8.2.4 属性の初期値と定数フィールド
  8.2.5 操作のの宣言方法
  8.2.6 クラス名とメンバ名のルール
  8.2.7 クラス定義のまとめ
8.3 クラス定義による効果 316
  8.3.1 クラス定義によって可能になる2つのこと
  8.3.2 クラス型変数とは
  8.3.3 クラス型変数が必要な理由
8.4 インスタンスの利用方法 319
  8.4.1 「神様のクラス」の作り方
  8.4.2 インスタンスの生成方法
  8.4.3 インスタンスのフィールド利用
  8.4.4 インスタンスのメソッド呼び出し
  8.4.5 インスタンス利用のまとめ
  8.4.6 オブジェクト指向のクラスは現実とつながっている
8.5 第8章のまとめ 328
8.6 練習問題 329
8.7 練習問題の解答 330


第9章 さまざまなクラス機構
9.1 クラス型と参照 334
  9.1.1 仮想世界の真の姿
  9.1.2 クラス型変数とその内容
  9.1.3 Step1:Hero型変数の確保
  9.1.4 Step2:Heroインスタンスの生成
  9.1.5 Step3:参照の代入
  9.1.6 Step4:フィールドへの値の代入
  9.1.7 同一インスタンスを指す変数
  9.1.8 クラス型をフィールドに用いる
  9.1.9 クラス型をメソッド引数や戻り値に用いる
  9.1.10 String型の真実
9.2 コンストラクタ 349
  9.2.1 生まれたてのインスタンスの状態
  9.2.2 フィールド初期値を自動設定する
  9.2.3 コンストラクタの定義方法
  9.2.4 コンストラクタに情報を渡す
  9.2.5 2つ以上の同名コンストラクタを定義する
  9.2.6 暗黙のコンストラク
  9.2.7 ほかのコンストラクタを呼び出す
9.3 第9章のまとめ 363
9.4 練習問題 364
9.5 練習問題の解答 366


第10章 継承
10.1 継承の基礎 370
  10.1.1 似かよったクラスの開発
  10.1.2 「コピペ解決法」の問題点
  10.1.3 継承による解決
  10.1.4 継承関係の表現方法
  10.1.5 継承のバリエーション
  10.1.6 オーバーライド
  10.1.7 継承やオーバーライドの禁止
10.2 インスタンスの姿 383
  10.2.1 インスタンスの多重構造
  10.2.2 メソッドの呼び出し
  10.2.3 親インスタンス部へのアクセス
10.3 継承とコンストラクタ 389
  10.3.1 継承を利用したクラスのコンストラク
  10.3.2 親インスタンス部分が作れない状況
  10.3.3 内部インスタンスのコンストラクタ引数を指定する
10.4 正しい継承、間違った継承 395
  10.4.1 is-aの原則
  10.4.2 間違った継承の例
  10.4.3 間違った継承をすべきでない理由
  10.4.4 汎化・特化の関係
10.5 第10章のまとめ 400
10.6 練習問題 401
10.7 練習問題の解答 403


第11章 高度な継承 
11.1 未来に備えるための継承 406
  11.1.1 高度な継承を学ぶにあたって
  11.1.2 新しい「立場」で考える
  11.1.3 「未来に備える」開発者の立場の具体例
11.2 高度な継承に関する2つの不都合 412
  11.2.1 2つの不都合、3つの心配
  11.2.2 最初の不都合
  11.2.3 不都合Aに対する間違った解決方法
  11.2.4 不都合Aに対する対応策と2つの心配事
  11.2.5 第1の心配事:オーバーライドを忘れる
  11.2.6 第2の心配事:「本当に何もしない」と区別がつかない
  11.2.7 第3の心配事:意図せずnewして利用されてしまう
  11.2.8 第3の心配事の原因
11.3 抽象クラス 424
  11.3.1 安全な「継承の材料」を実現するために
  11.3.2 詳細未定のメソッドを宣言
  11.3.3 未完成のためnewしてはいけないクラスの宣言
  11.3.4 オーバーライドの強制
  11.3.5 多階層の抽象継承構造
11.4 インタフェース 435
  11.4.1 抽象階層を上に辿ると…
  11.4.2 抽象クラスの特別扱い
  11.4.3 インターフェースの名前の由来
  11.4.4 インターフェースの実装
  11.4.5 特扱いされる理由
  11.4.6 インターフェースの継承
  11.4.7 extendsと implementsを一緒に使う
11.5 第11章のまとめ 452
11.6 練習問題 453
11.7 練習問題の解答 456


第12章 多態性 
12.1 多態性とは 460
  12.1.1 開発をラクにする多態性
  12.1.2 多態性のイメージ
  12.1.3 ザックリ捉えるメリット
12.2 ザックリ捉える方法 463
  12.2.1 ザックリ捉えるための文法
  12.2.2 できる代入、できない代入
  12.2.3 継承のもう1つの役割
  12.2.4 箱の型に抽象クラスを使う
12.3 ザックリ捉えたものに命令を送る 469
  12.3.1 捉え方の違いは使い方の違い
  12.3.2 呼び出せるメソッドの変化
  12.3.3 メソッドを呼び出せた場合に動く処理
12.4 捉え方を変更する方法 476
  12.4.1 捉え方を途中で変える
  12.4.2 キャストの失敗
  12.4.3 インスタンスを代入可能かチェックする
12.5 多態性のメリット 480
  12.5.1 ザックリ捉えることによるメリット
  12.5.2 同一視して配列を利用する
  12.5.3 同一視してザックリとした引数を受け取る
  12.5.4 ザックリ利用しても、ちゃんと動く
12.6 第12章のまとめ 487
12.7 練習問題 488
12.8 練習問題の解答 490


第13章 カプセル化 
13.1 カプセル化の目的とメリット 492
  13.1.1 カプセル化とは?
  13.1.2 アクセス制御されない怖さ
13.2 メンバに対するアクセス制御 498
  13.2.1 4つのアクセス制御レベル
  13.2.2 privateを利用する
  13.2.3 publicやpackage privateを利用する
  13.2.4 アクセス修飾の定石
13.3 getter と setter 503
  13.3.1 メソッドを経由したフィールド操作
  13.3.2 単純にフィールド値を取り出すだけのメソッド
  13.3.3 getterメソッドの書き方
  13.3.4 単純にフィールドに値を代入するだけのメソッド
  13.3.5 getter / setter の存在価値
    メリット1:Read Omly、Write Onlyのフィールドを実現できる
    メリット2:フィールドの名前など、クラスの内部設計を自由に変更できる
    メリット3:フィールドへのアクセスを検査できる
13.4 クラスに対するアクセス制御 512
  13.4.1 2つのアクセス制御レベル
  13.4.2 非publicクラスとソースファイル
13.5 カプセル化を支えている考え方 514
  13.5.1 メソッドでフィールドを保護する
  13.5.2 カプセル化の本質
13.6 第13章のまとめ 517
13.7 練習問題 518
13.8 練習問題の解答 520


  第III部 もっと便利にAPI活用術 525

第14章 Java を支えるクラスたち
14.1 Javaが備えるAPI群 528
  14.1.1 JavaAPIを探検しよう
14.2 すべてのクラスの祖先 529
  14.2.1 暗黙の継承
  14.2.2 Objectクラスの存在価値
    理由1:多態性を利用できるようになるから
    理由2:すべてのクラスが最低限備えるべきメソッドを定義できるから
  14.2.3 デフォルトの文字列表現
  14.2.4 文字列表現を定義する
  14.2.5 等値と等価の違い
  14.2.6 等価判定方法の指定
14.3 静的メンバ 540
  14.3.1 stackが付けられたメンバ
  14.3.2 静的フィールド
  14.3.3 静的メソッド
  14.3.4 静的メソッドの制約
  14.3.5 静的メンバの使いどころ
14.4 第14章のまとめ 551
14.5 練習問題 552
14.6 練習問題の解答 553


第15章 文字列と日付の扱い 
15.1 文字列処理とは 556
  15.1.1 文字列にまつわる処理
15.2 基本的な文字列操作 557
  15.2.1 文字列を調査する
  15.2.2 文字列を検索する
  15.2.3 文字列を切り出す
  15.2.4 文字列を変換する
15.3 文字列の連結 561
  15.3.1 文字列の連結の方法
  15.3.2 StringBuilderを用いた連結
  15.3.3 +演算子が遅い理由
15.4 正規表現の活用 566
  15.4.1 パターンマッチング
  15.4.2 正規表現の基本文法
    ①通常の文字:その文字でなければならない
    ②ピリオド:任意の1文字であればよい
    ③アスタリスク:直前の文字の0回以上の繰り返し
    ④波カッコ:指定回数の繰り返し
    ⑤角カッコ:いずれかの文字
    ⑥角カッコ内のハイフン:指定範囲のいずれかの文字
    ⑦ハットとダラー:先頭と末尾
  15.4.3 正規表現を用いたほかの処理
    splitメソッド:文字列の分割
    replaceAllメソッド:文字列の置換
15.5 文字列の書式整形 574
  15.5.1 桁を揃えた表示
15.6 日付と時刻を扱う 578
  15.6.1 日時情報を扱う2つの基本形式
    形式1:long型の数値
    形式2:Date型のインスタンス
  15.6.2 人間が扱いやすい2つの形式
    形式3:人間が指定しやすい「6つのint」形式
    形式4:人間が読みやすいString型のインスタンス
  15.6.3 Calenderクラスの利用
  15.6.4 SimpleDateFormatクラスの利用
  15.6.5 DateやCalenderの問題点と限界
15.7 Time API 589
  15.7.1 java.timeパッケージ
  15.7.2 より正確な「瞬間」を表すクラス
  15.7.3 曖昧な日時を表すクラス
  15.7.4 その他の日時を表すクラス
  15.7.5 時間や期間あを表すクラス
15.8 第15章のまとめ 599
15.9 練習問題 600
15.10 練習問題の解答 602


第16章 コレクション 
16.1 コレクションとは 606
  16.1.1 さまざまなデータ構造
  16.1.2 コレクションを体験する
  16.1.3 ラッパークラス[wrapper class]
16.2 ArrayListの使い方 613
  16.2.1 ArrayListの宣言と操作
  16.2.2 要素を順に取り出す3つの方法
  16.2.3 イテレータiterator
16.3 LinkedListの使い方 622
  16.3.1 連結されたリスト
  16.3.2 ザックリとらえれば、どちらもリスト
16.4 Set 関連のクラス 627
  16.4.1 コレクションクラスの全体像
  16.4.2 java.util.HashSetクラス
  16.4.3 Setの実装バリエーション
16.5 Map の使い方 633
  16.5.1 ペアを格納するデータ構造
  16.5.2 HashMapクラスの利用
  16.5.3 HashMapの中身を1つずつ取り出す
16.6 コレクションの応用 638
  16.6.1 コレクションのネスト
  16.6.2 要素の参照に関する注意点
  16.6.3 自分で作るクラスをコレクションに格納する場合の注意点
16.7 第16章のまとめ 642
16.8 練習問題 643
16.9 練習問題の解答 644


第17章 例外 
17.1 エラーの種類と対応策 648
  17.1.1 不具合のないプログラムを目指す
  17.1.2 3種類の不具合と対処法
    ①文法エラー[syntax error]
    ②実行時エラー[runtime error]
    ③論理エラー[logic error]
  17.1.3 例外的状況[exceptional situation]
17.2 例外処理[exceptional handling]の流れ 653
  17.2.1 従来型例外処理の問題点
  17.2.2 新しい例外処理の方法
17.3 例外クラスとその種類 657
  17.3.1 例外を表すクラス
  17.3.2 例外の種類
    ①Error系例外
    ②Exception系例外
    ③RuntimeException系例外
  17.3.3 チェック例外
  17.3.4 発生する例外の調べ方
17.4 例外の発生と例外インスタンス 663
  17.4.1 例外インスタンスの受け渡し
  17.4.2 例外インスタンスの利用
17.5 さまざまなcatch構文 666
  17.5.1 try-catch構文の基本形
  17.5.2 2種類以上の例外をキャッチする
  17.5.3 ザックリと例外をキャッチする方法
  17.5.4 後片付け処理への対応
  17.5.5 close( )にまつわる複雑なエラーと解決方法
    ①「変数fwが見つからない」エラーを解決する
    ②「new FlieWriter( )をtry-catchしてない」エラーを解決する
    ③「初期化されていない変数fwを利用する可能性がある」エラーを解決する
    ④「fw.closeをtry-catchしてない」エラーを解決する
    ⑤「NullPointerExceptionの発生」に対応する
  17.5.6 自動的にcliose()が呼ばれるtry-catch文
17.6 例外の伝播 680
  17.6.1 mainメソッドで例外をキャッチしないと…
  17.6.2 チェック例外の伝播とスロー宣言
17.7 例外を発生させる 685
  17.7.1 例外的状況をJVMに報告する
  17.7.2 オリジナル例外クラスの定義
17.8 第17章のまとめ 689
17.9 練習問題 690
17.10 練習問題の解答 691


第18章 まだまだ広がるJavaの世界 
18.1 ファイルを読み書きする 694
  18.1.1 ストリーム
  18.1.2 ファイルから文字を読み込む
  18.1.3 ファイルへ文字を書き込む
18.2 インターネットにアクセスする 697
  18.2.1 Webページを取得する
18.3 データベースを操作する 699
  18.3.1 データベースとSQL
18.4 ウィンドウアプリケーションを作る 701
  18.4.1 CUIGUI
18.5 スマートフォンアプリを作る 703
  18.5.1 携帯端末で動くJavaプログラム
18.6 Webサーバで動くJavaプログラム 705
  18.6.1 Webアプリケーションとは
  18.6.2 Javaで作るWebアプリケーション

さらなる高みを目指して―― 708


付録
付録A ローカル開発環境のセットアップと利用 709
  A.1 ローカル開発環境の種類と構成 710
    A.1.1 Javaの開発に必要なルール
    A.1.2 JDK単体を用いる方法
    A.1.3 統合開発環境の利用
    A.1.4 プラグイン追加済みIDEの利用
    A.1.5 ローカル開発環境を選ぶ
  A.2 コマンドプロンプトの使い方 715
    A.2.1 コマンドプロンプトとは
    A.2.2 コマンドプロンプトの起動
    A.2.3 カレントディレクトリ[current directory]
    A.2.4 ファイルの一覧表示【dirコマンド/ls -laコマンド】
    A.2.5 カレントディレクトリの変更
    A.2.6 その他の操作
  A.3 JDK単体利用による開発手順 719
    A.3.1 手順① ソースコードの作成
    A.3.2 手順② コンパイルする
    A.3.3 手順③ プログラムの実行
    A.3.4 手順④ プログラムの実行


付録B エラー解決・虎の巻74 25
  B.1 エラーとの上手なつきあい方 726
    B.1.1 エラーを解決できるようになる3つのコツ
    B.1.2 コンパイルエラーの読み方
    B.1.3 実行時エラーの読み方
  B.2 トラブルシューティング 730
    B.2.1 Javaのセットアップができない
    B.2.2 コンパイルができない(初級編)
    B.2.3 コンパイルができない(中級編)
    B.2.4 プログラムが実行できない
    B.2.5 エラーは出ないが動作がおかしい
    B.2.6 文字列の操作
    B.2.7 日付情報の操作
    B.2.8 コレクション
  B.3 エラーメッセージ別索引 746


付録C クイックリファレンス 747
  C.1 代表的な構文 748
  C.2 予約語 751
  C.3 演算子 752
  C.4 正規表現 753
  C.5 エスケープシーケンス 754
  C.6 ACSII 文字コード 755


INDEX [757-765]
奥付 [766]



【コラム一覧】
スッキリわかるシリーズ 005
QRコードでdokojava にアクセスしよう 019
バイトコード仮想マシン 060
整数リテラルに関する応用記法 065
++や-は、ほかの演算子と一緒に使わない! 075
整数型としてのchar型 081
Java言語仕様をのぞいてみよう 085
円記号とバックスラッシュ 096
条件式の短絡評価 115
数学の表現とJava 条件式の表現 116
三項条件演算子 137
配列のlength と文字列のlength()  171
メソッド名の表記について 191
メソッドのシグネチャ 208
JARファイル 232
デフォルトパッケージ 235
import 宣言はあくまでも「入力軽減機能」 240
似ているようで異なるjavac と java の引数 249
クラスロードは必要なときに必要なものだけ 261
クラスパスに自動的に加わるAPI 267
「考え方」「捉え方」の違いが世界を変えることもある 280
thisは省略しないで! 315
フィールド初期値の設定手段 367
フィールドはオーバーライドさせない! 382
親の親インスタンス部分へのアクセスは不可能! 388
コンストラクタは継承されない 404
インタフェースにおける定数宣言 439
インタフェースで利用できるメソッドの種類 451
クラスに対するアクセス修飾の定石 502
継承関係によるアクセス制御 519
同一クラス内でもアクセサ経由でアクセスする 524
getter / setter を用いた増減のイディオム 524
System.out.println()の中身 532
staticインポート文 554
String・char配列・byte配列の相互変換 565
メソッドチェーン 573
可変長引数 577
java.sql.Dateと混同しない 580
和暦を扱う API 590
Collectionインタフェース 637
CollectionsクラスとArraysクラス 641
ローカル変数の型推論 645
例外をもみ消さない 684
さまざまなモノにつながるストリーム 698
VM上で動作するJava以外の言語 704
さまざまなJDK 714
JREJava Runtime Enviroment]とは 718
Java の進化の歴史 723




【メモランダム】
・玄人目線で入門書を比較すると、この本にもキズはあるようだ。以下は一例。
https://twitter.com/kis/status/1499315606872494081