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


プログラミング言語 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 有用な表

さらなる学習
索引

書籍目次

Posted by shi-n