スッキリわかるJava入門 実践編 第2版
3,080円(本体 2,800円+税10%)
- 品種名
- 書籍
- 発売日
- 2014/9/22
- ページ数
- 628
- サイズ
- A5判
- 著者
- 中山 清喬 著
- ISBN
- 9784844336778
開発現場の知識が着実に身に付く、Javaプロフェッショナル養成書の決定版!
ラムダ式や日付APIなどJava8の注目機能の解説を増補し、アジャイル関連やデザインパターンについての解説も徹底強化した改訂版登場! 姉妹書の『Java入門』と同じく、「なぜ?」にしっかりと答えながら解説が進んでいきますので、正規表現やコレクション、データベース連携、リファクタリング、並列処理など、Javaを仕事で使いこなすために必須の知識が、スッキリ、楽しく、グングン身に付きます。基本文法やオブジェクト指向の概念はわかった、さらにステップアップしたい、という方にお勧めです。
「読者アンケートに答える」「読者プレゼントに応募」の場合もこちらをご利用ください。
書籍の内容に関するお問い合わせはこちら。お答えできるのは本書に記載の内容に関することに限ります。
学校・法人一括購入に関するお問い合わせはこちらへ。
詳細
■著者からのメッセージ
これまでさまざまな開発現場をお手伝いする中で、研修を終えたばかりの若手の方が現場ならではの難しさに苦悩する姿に数多く出会いました。座学による言語学習と現場における実践との間に横たわる溝を埋めるための一冊を、との想いで筆を進めたのが本書です。執筆に際しては、特に以下の2点を意識しました。
1. Javaの実践に必要な周辺スキルを、まんべんなく届けること
開発や設計手法、ツールについての最低限の知識がないために、チームに迷惑をかけてしまったり、作業の進め方や設計の拙さを指摘されても問題点や改善方法がわからず悩んだりする人も少なくありません。
そこで本書では各種APIに加え、開発現場で求められる内容についても幅広く紹介しました。「これを渡しておけば若手が現場でとまどわない一冊」として、現場の先輩方にも活用いただけることをめざしています。
2. 本格的な技術やそのおもしろさと出会うきっかけを提供すること
Javaの世界では、さらに効率よく創造的に開発を進めるための技術や技法が日々生まれ進化しています。しかし、忙しい実務の傍ら各分野の高度な書籍を購入して学ぶことは容易ではありません。
そこで本書には、各専門分野から抽出した本格技術のエッセンスを入門者向けにわかりやすくアレンジして収めました。より高度な技術者たちと楽しく協働する世界への架け橋となれば幸いです。
この第2版では、Java8で追加となったラムダ式や日付APIに加え、アジャイル関連やデザインパターンについても増補しました。
本当に楽しいこと、本当におもしろいことは実践の場にこそあります。本書の柔らかい解説を楽しく読み進めていただき、読者の皆様が更なる高みへと進まれる姿を見送れたら、これに勝る歓びはありません。
■著者プロフィール
中山清喬(なかやま・きよたか)
株式会社フレアリンク代表取締役。IBM内の先進技術部隊に所属しシステム構築現場を数多く支援。退職後も研究開発・技術適用支援・教育研修・執筆講演・コンサルティング等を通じ、「技術を味方につける経営」を支援。現役プログラマ。講義スタイルは「ふんわりスパルタ」。著書に『スッキリわかるJava入門 第2版』『スッキリわかるSQL入門 ドリル215問付き』。
メディア掲載情報
2019/12/12:gooランキング『プログラミング本の人気おすすめランキング20選【挫折しない本を】』にて紹介されました。
目次
まえがき
「dokojava」の使い方
本書の見方
第0章 Javaを使いこなす技術者をめざそう
0.1 ようこそ、Java実践の世界へ
第Ⅰ部 さまざまな基本機能
第1章 文字列の操作
1.1 文字列処理とは
1.2 基本的な文字列操作
1.3 文字列の連結
1.4 正規表現の活用
1.5 文字列の書式整形
1.6 この章のまとめ
1.7 練習問題
1.8 練習問題の解答
第2章 日付と時間の取り扱い
2.1 日付取り扱いの基本
2.2 従来型APIが抱える課題
2.3 Time API
2.4 この章のまとめ
2.5 練習問題
2.6 練習問題の解答
第3章 コレクション
3.1 コレクションとは
3.2 ArrayListの使い方
3.3 その他のリスト
3.4 さまざまなコレクションクラス
3.5 Mapの使い方
3.6 コレクションの応用
3.7 この章のまとめ
3.8 練習問題
3.9 練習問題の解答
第4章 インスタンスの基本操作
4.1 インスタンスの5大基本操作
4.2 インスタンスの文字列表現
4.3 インスタンスの等価判定
4.4 インスタンスの要約
4.5 インスタンスの順序づけ
4.6 インスタンスの複製
4.7 この章のまとめ
4.8 練習問題
4.9 練習問題の解答
第5章 さまざまな種類のクラス
5.1 型安全という価値
5.2 ジェネリクス
5.3 列挙型
5.4 インナークラス
5.5 この章のまとめ
5.6 練習問題
5.7 練習問題の解答
第6章 ラムダ式と関数オブジェクト
6.1 関数オブジェクト
6.2 ラムダ式
6.3 Streamによる関数の活用
6.4 この章のまとめ
6.5 練習問題
6.6 練習問題の解答
第7章 JVM制御とリフレクション
7.1 JVMへのアクセス
7.2 JVMの終了
7.3 外部プログラムの実行
7.4 システムプロパティの利用
7.5 メモリに関する状態の取得
7.6 リフレクション
7.7 この章のまとめ
7.8 練習問題
7.9 練習問題の解答
第8章 非標準ライブラリの活用
8.1 ライブラリとは
8.2 クラスパスのおさらい
8.3 commons-langを使ってみよう
8.4 ログ出力ライブラリ
8.5 オープンソースとライセンス
8.6 この章のまとめ
8.7 練習問題
8.8 練習問題の解答
第Ⅱ部 外部資源へのアクセス
第9章 ファイルの操作
9.1 ファイル操作の前提知識
9.2 テキストファイルの読み書き
9.3 バイナリファイルの読み書き
9.4 ファイル操作の落とし穴
9.5 ストリームの概念
9.6 フィルタの活用
9.7 ファイルシステムの操作
9.8 この章のまとめ
9.9 練習問題
9.10 練習問題の解答
第10章 さまざまなファイル形式
10.1 データフォーマット
10.2 CSV形式
10.3 プロパティファイル形式
10.4 XML形式
10.5 オブジェクトの直列化
10.6 この章のまとめ
10.7 練習問題
10.8 練習問題の解答
第11章 ネットワーク通信
11.1 URLを用いた高水準アクセス
11.2 Socketを用いた低水準アクセス
11.3 ServerSocketを使ってサーバーを作る
11.4 この章のまとめ
11.5 練習問題
11.6 練習問題の解答
第12章 データベースアクセス
12.1 データベースとは
12.2 データベースの基本操作
12.3 データベースの接続と切断
12.4 更新系SQLの送信
12.5 検索系SQLの送信
12.6 結果表の処理
12.7 トランザクション処理
12.8 この章のまとめ
12.9 練習問題
12.10 練習問題の解答
第Ⅲ部 効率的な開発の実現
第13章 基本的な開発ツール
13.1 Javaが備える基本ツール
13.2 javadoc─仕様書の自動生成
13.3 javac─コンパイル
13.4 native2ascii─文字コードの変換
13.5 jar─アーカイブの操作
13.6 java─JVMの起動と実行
13.7 統合開発環境
13.8 この章のまとめ
13.9 練習問題
13.10 練習問題の解答
第14章 単体テストとアサーション
14.1 不具合に対するアプローチ
14.2 単体テストのやりかた
14.3 JUnitを用いたテスト
14.4 アサーション
14.5 この章のまとめ
14.6 練習問題
14.7 練習問題の解答
第15章 メトリクスとリファクタリング
15.1 品質の「見える化」
15.2 さまざまなメトリクス
15.3 リファクタリング
15.4 コードの静的解析
15.5 この章のまとめ
15.6 練習問題
15.7 練習問題の解答
第16章 コードとタスクの共有
16.1 チームによる開発
16.2 コードの共有
16.3 SCMを用いた開発
16.4 競合の発生と回避
16.5 タスクの共有
16.6 この章のまとめ
16.7 練習問題
16.8 練習問題の解答
第17章 アジャイルな開発
17.1 チーム開発の基盤
17.2 共通の言葉
17.3 共通の手順
17.4 アジャイルという価値観
17.5 エクストリーム・プログラミング(XP)
17.6 スクラム(Scrum)
17.7 ビルドの自動化
17.8 この章のまとめ
17.9 練習問題
17.10 練習問題の解答
第Ⅳ部 より高度な設計をめざして
第18章 設計の原則とデザインパターン
18.1 優れた設計の原則
18.2 コード記述全般に関する原則
18.3 クラスの設計に関する原則
18.4 クラスの関係に関する原則
18.5 デザインパターン
18.6 Facade 内部を隠してシンプルに
18.7 Singleton 唯一無二の存在
18.8 Strategy プラグインの切り替え
18.9 TemplateMethod 大まかなシナリオ
18.10 この章のまとめ
18.11 練習問題
18.12 練習問題の解答
第19章 スレッドによる並列処理
19.1 処理効率の追求
19.2 Javaにおける並列処理
19.3 スレッドセーフな設計
19.4 Concurrency Utilitiesの利用
19.5 並列処理の影響と可能性
19.6 この章のまとめ
19.7 練習問題
19.8 練習問題の解答
付録 エラー解決・虎の巻
あとがき&参考文献一覧
索引
COLUMN
・メソッドチェーン
・String・char配列・byte配列の相互変換
・可変長引数
・APIの改訂と普及の速度
・和暦を扱うAPI
・Java7以前でも便利な日時APIを利用するには
・ダイヤモンド演算子の省略記法
・Collectionインタフェース
・古参のコレクションクラス
・CollectionクラスとArraysクラス
・equals()オーバーライドが不要なクラス
・ハッシュ計算に登場する整数たち
・オーバーライドによるアクセス修飾の拡大
・静的型付けと動的型付け
・利用できる実型引数を制限する
・減りゆくインナークラス活躍の場
・配列に対してStream処理を行うには
・膨大なデータを分散高速処理するアプローチ
・OS環境変数の取得
・コンパイル時にもクラスパス指定は必要
・ログレベルの利用基準は明確に
・デュアルライセンスとは
・Creative Commonsライセンス
・ランダムアクセス用のAPI
・文字コード体系の別称
・Java7における便利な記法
・ディレクトリの指定方法
・標準出力の接続先をファイルに変更する
・分業インタフェースとしてのデータフォーマット
・プロパティファイルの注意点
・クラスパスからファイルを読み込む
・JSON-Webで活躍するデータフォーマット
・ファイナライザで後片付けしない
・DatagramSocketを使ったUDP通信
・RFCを読もう
・JVM内部でプログラムと同居するDBMS
・DriverManager以外の方法によるConnectionの取得
・クラスロード時に動作するstaticブロック
・RDBMS以外のストレージ
・DTOとDAO
・JVM上で動作するJava以外の言語
・2種類の「単体テスト」
・目的の違いによるテストの分類方法
・優れたテストケースを見つけるための方法論
・JUnit3の場合
・テストメソッド名に日本語を使う
・契約による設計
・計測できないものは制御できない
・さまざまな環境から起動できるツールたち
・より高度なバージョン管理システムの活用
・プロジェクトの状態を共有するための資料
・アジャイル開発のメリットを活かしにくい状況
・振る舞い駆動開発(BDD)
・日本に関係が深い「アジャイル開発」
・XPとスクラムの併用
・mavenによる高水準ビルド自動化
・想像以上に重要な「名前」
・SOLID原則
・Singletonパターンの抜け道に注意
・Runnableの利用
・並列実行性のために「状態」を排除する
関連書籍
ダウンロード
-
本書掲載のソースコードは、著者運営サイトでダウンロードできます。
▼スッキリわかるシリーズ ダウンロードページ
https://sukkiri.jp/books/sukkiri_javap2/sukkiri_javap2_download.html
お詫びと訂正
誤記のためにご迷惑をおかけし、誠に申し訳ございません。
- 0ページ ソースコードのダウンロードページURLについて
- [誤]
書籍内で案内している、ソースコードダウンロードページのURLが、サイトリニューアルにともないアクセスできなくなりました。今後は本ページ内(上部)にある、「ダウンロード」コーナーをご利用ください。 - [正]
- [誤]
- 11ページ コラム目次左段、上から11行目
- [誤]
CollectionクラスとArraysクラス 106 - [正]
CollectionsクラスとArraysクラス 106 - 【 第8刷にて修正 】
- [誤]
- 28ページ リスト1-3の5行目
- [誤]
// a Pro - [正]
// a pro - 【 第7刷にて修正 】
- [誤]
- 28ページ リスト1-3の5行目
- [誤]
“文字列s1の4~7文字目は” - [正]
“文字列s1の4~8文字目は” -
備考:
※電子版は8刷で対応
- 【 第9刷にて修正 】
- [誤]
- 28ページ リスト1-3の吹き出し
- [誤]
8文字目は含まれない点に注意 - [正]
位置指定8の文字は含まれない点に注意 -
備考:
※電子版は8刷で対応
- 【 第9刷にて修正 】
- [誤]
- 31ページ ページ下のコラム内、下のソースコード1行目
- [誤]
String Buffer sb = new StringBuffer(); - [正]
StringBuilder sb = new StringBuilder(); - 【 第3刷にて修正 】
- [誤]
- 35ページ コラム内のソースコード3行目
- [誤]
byte[] data3 = str.getBytes(java.nio.Charset.forName("utf-8"); - [正]
byte[] data3 = str.getBytes("utf-8"); - 【 第3刷にて修正 】
- [誤]
- 41ページ ページ中程の小見出し、文頭数字
- [誤]
⑥ハットとダラー:先頭と末尾 - [正]
⑦ハットとダラー:先頭と末尾 - 【 第6刷にて修正 】
- [誤]
- 45ページ リスト1-9の1行目
- [誤]
final String FORMAT = “%8s %6s 所持金%,5d”; - [正]
final String FORMAT = "%-9s %-13s 所持金%,6d"; - 【 第10刷にて修正 】
- [誤]
- 60ページ リスト2-2の22行目、24行目
- [誤]
・22行目
System.out.println("東京:" + z2.getYear() + z2.getMonth() + z2.getDayOfMonth());
・24行目
System.out.println("ロンドン:" + z3.getYear() + z3.getMonth() + z3.getDayOfMonth()); - [正]
改)
・22行目
System.out.println("東京:" + z2.getYear() + z2. getMonthValue() + z2.getDayOfMonth());
・24行目
System.out.println("ロンドン:" + z3.getYear() + z3. getMonthValue() + z3.getDayOfMonth());
※2行とも「getMonth()」を「getMonthValue()」に変更。 - 【 第7刷にて修正 】
- [誤]
- 73ページ 図3-2
- [誤]
LinkedHasMap - [正]
LinkedHashMap - 【 第6刷にて修正 】
- [誤]
- 79ページ 図3-6 菅原さんイラストのすぐ右の矢印付き解説文
- [誤]
挿入された要素 - [正]
上書きされた要素 - 【 第7刷にて修正 】
- [誤]
- 85ページ 解説本文、上から1-2行目
- [誤]
そのリストの先頭(最初の箱よりもっと前) - [正]
そのリストの先頭(最初の箱)よりもっと前
-
備考:
※色つき太字は「先頭(最初の箱)よりもっと前」の部分とする
- 【 第7刷にて修正 】
- [誤]
- 92ページ 図3-16内、「LinkedHashSet」と「LinkedHashMap」の下の文字
- [誤]
インタフェース - [正]
クラス - 【 第4刷にて修正 】
- [誤]
- 94ページ リスト3-4 10行目のフキダシ
- [誤]
重複して赤を格納しようしても無視される - [正]
重複して「赤」を格納しようとしても無視される
- 【 第7刷にて修正 】
- [誤]
- 99ページ 表3-5内、メソッド「remove(●)」の戻り値
- [誤]
boolean - [正]
■ - 【 第4刷にて修正 】
- [誤]
- 125ページ 本文上から1行目
- [誤]
第2章のコラムで紹介したCollectionクラス - [正]
第3章のコラムで紹介したCollectionsクラス -
備考:
「Collection」→「Collections」の変更は、8刷で対応
- 【 第5刷にて修正 】
- [誤]
- 134ページ 本文下から3行目
- [誤]
リスト4-8の10行目を「result.sword = ~ - [正]
SwordクラスでCloneableを実装した上で、リスト4-8の10行目を「result.sword = ~ - 【 第10刷にて修正 】
- [誤]
- 137ページ 「練習4-1の解答」中
- [誤]
3行目(public class Book implements~)と4行目(public int hashCode() {)の間に、以下の3行を挿入する - [正]
private String title;
private Date publishDate;
private String comment; - 【 第2刷にて修正 】
- [誤]
- 150ページ 図5-5、キャプション
- [誤]
Pocket<E>から、Pocket<Integer>やPocket<Hero>が作られる - [正]
Pocket<E>から、Pocket<Hero>やPocket<String>が作られる - 【 第6刷にて修正 】
- [誤]
- 155ページ リスト5−9の右上にあるソースファイル名
- [誤]
Account.java - [正]
AccountType.java - 【 第3刷にて修正 】
- [誤]
- 156ページ 本文下から3行目から
- [誤]
たとえばソースコードの先頭で「import static System.*」という - [正]
たとえばソースコードの先頭で「import static java.lang.System.*」という - 【 第5刷にて修正 】
- [誤]
- 158ページ 本文 下から2行目の文章(~しれません。)の最後の読点の 直前に、括弧書きを追加
- [誤]
~かもしれません。 - [正]
~かもしれません(厳密には、static付きのものは言語仕様上インナークラスの範囲には含まれないことになっています)。 - 【 第5刷にて修正 】
- [誤]
- 160ページ 中段青い囲みの2行明
- [誤]
Outer.Inner = o.new Inner(); - [正]
Outer.Inner oi = o.new Inner(); - 【 第5刷にて修正 】
- [誤]
- 161ページ 囲み「ローカルクラスの特徴」の続き、上から3-4行目
- [誤]
自身を取り囲むメソッド内のローカル変数についてはfinalが付いたものにのみアクセスが可能。 - [正]
自身を取り囲むメソッド内のローカル変数についてはfinalが付いたものにのみアクセスが可能(ただしJava8以降では、再代入がなされていないなら暗黙的にfinalとみなされエラーにならない)。 - 【 第8刷にて修正 】
- [誤]
- 161ページ リスト5-12 9-10行目の吹き出し
- [誤]
ローカルクラスの内部からouterMemnberは利用できるが変数aは利用できない - [正]
ローカルクラスの内部からouterMemberは利用できるが変数aは利用できない(Java8以降では変数aは暗黙的にfinalとして扱われるため利用可能) -
備考:
※9刷で対応:「outerMemnber」→「outerMember」
※後方の丸括弧部分の追加:8刷 - 【 第9刷にて修正 】
- [誤]
- 165ページ 表5-1 「無関係クラスからの利用方法」行 「static メンバクラス」列 のセル内容
- [誤]
new o.Inner() *1 - [正]
o.new Inner() *1
- [誤]
- 165ページ 表5-1 「外部クラスからの利用方法」行 「static メンバクラス」列 のセル内容
- [誤]
new o.Inner() *1 - [正]
o.new Inner() *1
- [誤]
- 169ページ 5.7、練習5-2の解答中、13-22行目
- [誤]
switch(this.keyType) {
case PADLOCK:
if(count < 1024) return null;
case BUTTON:
if(count < 10000) return null;
case DIAL:
if(count < 30000) return null;
case FINGER:
if(count < 100000) return null;
} - [正]
switch(this.keyType) {
case PADLOCK:
if (count < 1024) return null;
break;
case BUTTON:
if (count < 10000) return null;
break;
case DIAL:
if(count < 30000) return null;
break;
case FINGER:
if (count < 1000000) return null;
break;
} -
備考:
※「break;」を4ヶ所挿入する
- 【 第3刷にて修正 】
- [誤]
- 169ページ 練習5-2の解答、24行目
- [誤]
if (count < 100000) return null; - [正]
if (count < 1000000) return null; - 【 第6刷にて修正 】
- [誤]
- 181ページ 湊君の吹き出し会話の内容
- [誤]
じゃぁどうしてリスト16-2では、IntBinaryOperator型に - [正]
じゃぁどうしてリスト6-2では、IntBinaryOperator型に - 【 第5刷にて修正 】
- [誤]
- 184ページ リスト6-4、5行目の右端の演算子
- [誤]
{ return a ? b; }; - [正]
{ return a - b; }; - 【 第2刷にて修正 】
- [誤]
- 188ページ 6.3.2 本文3行目
- [誤]
List<Integer>の各要素を2倍する - [正]
List<Integer>の各要素の2倍を表示する - 【 第6刷にて修正 】
- [誤]
- 189ページ 上部コード3行目
- [誤]
i = i * 2; - [正]
System.out.println(i * 2); - 【 第6刷にて修正 】
- [誤]
- 189ページ 中部コード1-2行目
- [誤]
//① List<Integer> list1の各要素を2倍する
list1.stream().forEach(i -> i * 2); - [正]
//① List<Integer> list1の各要素の2倍を表示する
list1.stream().forEach(i -> System.out.println(i * 2)); - 【 第6刷にて修正 】
- [誤]
- 189ページ 上部コード 1行目のコメント行後半
- [誤]
各要素を2倍する - [正]
各要素の2倍を表示する - 【 第6刷にて修正 】
- [誤]
- 191ページ 中部コード1-2行目
- [誤]
//① List<Integer> list1の各要素を2倍する(高速版)
list1.parallelStream().forEach(i -> i * 2); - [正]
//① List<Integer> list1の各要素の2倍を表示する(高速版)
list1.parallelStream().forEach(i -> System.out.println(i * 2)); - 【 第6刷にて修正 】
- [誤]
- 204ページ 「実行結果」の1行目のコマンド
- [誤]
java -D rpg.version=0.3 -D rpg.author=湊 Main - [正]
java -Drpg.version=0.3 -Drpg.author=湊 Main
(※-Dの後ろの空白をトル[2箇所]) - 【 第8刷にて修正 】
- [誤]
- 204ページ リスト7-4の6行目
- [誤]
System.out.println("Developed by" + author); - [正]
System.out.println("Developed by " + author);
(byの後ろの空白追加) - 【 第8刷にて修正 】
- [誤]
- 205ページ ページ一番下のコード
- [誤]
long f = System.getRuntime().freeMemory() / 1024 / 1024; - [正]
long f = Runtime.getRuntime().freeMemory() / 1024 /1024; - 【 第4刷にて修正 】
- [誤]
- 212ページ リスト7-6 Main.javaの9, 10, 11行目
- [誤]
pub - [正]
times - 【 第4刷にて修正 】
- [誤]
- 212ページ リスト7-6 Main.javaの8行目
- [誤]
pub - [正]
times - 【 第7刷にて修正 】
- [誤]
- 212ページ リスト7-6 Main.java 4行目
- [誤]
Class clazz = RefSample.class; - [正]
Class<?> clazz = RefSample.class; - 【 第9刷にて修正 】
- [誤]
- 215ページ 練習7-1 項目2.
- [誤]
2. 現在のメモリ使用率(最大地にはtotalMemoryを利用)を表示する。 - [正]
2. 現在のメモリ使用量を表示する。 - 【 第4刷にて修正 】
- [誤]
- 215ページ 練習7-1 項目3.
- [誤]
すべてのstaticメソッド - [正]
すべてのメソッド - 【 第4刷にて修正 】
- [誤]
- 215ページ 練習7-1 項目4.
- [誤]
文字列配列の引数を持つstaticメソッド - [正]
文字列配列の引数を持つpublicメソッド - 【 第4刷にて修正 】
- [誤]
- 215ページ 練習7-1 項目4.
- [誤]
4. FQCNのクラスが、文字列配列の引数を持つpublicメソッドmain()を持つか調べ、もし持っていれば、コマンドライン第二引数によって(後略) - [正]
4. コマンドライン第二引数によって(後略) - 【 第7刷にて修正 】
- [誤]
- 244ページ 練習8-2のBook.java 12行目
- [誤]
12 return CompareToBuilder.reflectionCompare(this, o); - [正]
12 return CompareToBuilder.reflactionCompare(this, o, "comment", "title");」
- [誤]
- 250ページ コラム「ランダムアクセス用のAPI」内ソースコード最終行
- [誤]
f.writeByre(b); - [正]
f.writeByte(b); - 【 第3刷にて修正 】
- [誤]
- 256ページ 図9-4の吹き出し文
- [誤]
6.2節で学習済 - [正]
9.2節で学習済 - 【 第8刷にて修正 】
- [誤]
- 263ページ リスト9-4
- [誤]
15行目、17行目を削除する - [正]
- 【 第3刷にて修正 】
- [誤]
- 273ページ 特徴(2)の本文3行目に追加
- [誤]
「~コンストラクタで指定して生成します。」の後ろに、次の文を追加。 - [正]
なお、コード内に登場する変数algoには、暗号化方式等の指定が格納されているものとします。 - 【 第3刷にて修正 】
- [誤]
- 273ページ 特徴(2)のソースコード4行目
- [誤]
備考参照 - [正]
-
備考:
【誤】CipherOutputStream cos = new CipherOutputStream(fos);
【正】CipherOutputStream cos = new CipherOutputStream(fos, algo); - 【 第3刷にて修正 】
- [誤]
- 273ページ 特徴(1)の本文3行目
- [誤]
java.io.CipherOutputStreamは - [正]
javax.crypto.CipherOutputStreamは - 【 第4刷にて修正 】
- [誤]
- 274ページ 特徴(3)のソースコード4行目
- [誤]
備考参照 - [正]
-
備考:
【誤】CipherOutputStream cos = new CipherOutputStream(fos);
【正】CipherOutputStream cos = new CipherOutputStream(fos, algo); - 【 第3刷にて修正 】
- [誤]
- 274ページ 特徴(3)のソースコード、最後の4行
- [誤]
// STEP3: さらに文字バイト変換をするストリームwosを接続
WriterOutputStream wos = new WriterOutputStream(cos);
// STEP4: wosに文字書き込めば、バイト変換&暗号化されファイルに流れていく
wos.write("AB"); - [正]
// STEP3: さらに文字バイト変換をするストリームoswを接続
OutputStreamWriter osw = new OutputStreamWriter(cos);
// STEP4: oswに文字書き込めば、バイト変換&暗号化されファイルに流れていく
osw.write("AB");
- 【 第3刷にて修正 】
- [誤]
- 274ページ 図9-14
- [誤]
図中右上にある「wos」
図中右端にある「wos.write("AB");」
図中下端にある「WriterOutputStream」 - [正]
それぞれ上から
「osw」
「osw.write("AB");」
「OutputStreamWriter」
となる - 【 第3刷にて修正 】
- [誤]
- 274ページ 原の吹き出し文1行目
- [誤]
wos.close()を実行すれば、 - [正]
osw.close()を実行すれば、 - 【 第3刷にて修正 】
- [誤]
- 274ページ 特徴(3)のソース断片コメント
- [誤]
// STEP4:wosに文字書き込めば、バイト変換&暗号化されファイルに流れていく - [正]
// STEP4:oswに文字を書き込めば、バイト変換&暗号化されファイルに流れていく - 【 第4刷にて修正 】
- [誤]
- 278ページ 本文下から3行目(コード囲み除く)
- [誤]
java.nio.Pathsクラス - [正]
java.nio.file.Pathsクラス - 【 第6刷にて修正 】
- [誤]
- 323ページ リスト11-3 10行目
- [誤]
sock.getOutputStream.flush(); - [正]
sock.getOutputStream().flush(); - 【 第6刷にて修正 】
- [誤]
- 323ページ リスト11-3、4行目
- [誤]
Excepiton - [正]
Exception - 【 第7刷にて修正 】
- [誤]
- 346ページ 図12-10「SQL送信パターン(1)更新系」の黒いフキダシ
- [誤]
9.4節 - [正]
12.4節 - 【 第6刷にて修正 】
- [誤]
- 346ページ 図12-10「SQL送信パターン(2)検索系」の黒いフキダシ
- [誤]
9.5節 - [正]
12.5節 - 【 第6刷にて修正 】
- [誤]
- 346ページ 図12-10「結果表処理パターン (1)複数件結果」の黒いフキダシ
- [誤]
9.6.1項 - [正]
12.6.2項 - 【 第6刷にて修正 】
- [誤]
- 346ページ 図12-10「結果表処理パターン (2)1件結果」の黒いフキダシ
- [誤]
9.6.2項 - [正]
12.6.3項 - 【 第6刷にて修正 】
- [誤]
- 361ページ リスト12-6 23-30行目
- [誤]
23 } finally {
24 // STEP 3: データベース接続の切断
25 if(con != null) {
26 try {
27 con.close();
28 } catch(SQLException e3) {
29 e3.printStackTrace(); /* 切断失敗時の処理(*)*/
30 } - [正]
23 }
24 } finally {
25 // STEP 3: データベース接続の切断
26 if(con != null) {
27 try {
28 con.close();
29 } catch(SQLException e3) {
30 e3.printStackTrace(); /* 切断失敗時の処理(*)*/ - 【 第9刷にて修正 】
- [誤]
- 364ページ 練習問題12-2問題、問題文1行目
- [誤]
このクラスが呼び出しているItemDAOクラス - [正]
このクラスが呼び出しているItemsDAOクラス - 【 第7刷にて修正 】
- [誤]
- 364ページ 練習問題12-2問題、ソースコード 6行目 =の右辺
- [誤]
ItemDAO.findByMinimumPrice(1); - [正]
ItemsDAO.findByMinimumPrice(1); - 【 第7刷にて修正 】
- [誤]
- 367ページ 練習問題12-2解答、ソースコード 31行目
- [誤]
e.printStackTrace(); - [正]
e.printStackTrace();
return null;
- 【 第7刷にて修正 】
- [誤]
- 383ページ ページ上部、大江のセリフ内
- [誤]
第6章を参照 - [正]
10.5.5項を参照 - 【 第5刷にて修正 】
- [誤]
- 401ページ 練習13-2の「JARファイルの作成」
- [誤]
>jar -cvfm manifest.txt atm.jar jp\miyabilink\atm\Bank.class - [正]
>jar -cvfm atm.jar manifest.txt jp\miyabilink\atm\Bank.class - 【 第7刷にて修正 】
- [誤]
- 424ページ ページ中程、テストクラスのコンパイル、実行、実行結果の記述の2行目前半
- [誤]
>java –cp.;(後略)
※「-cp」の後に半角スペースがない - [正]
>java -cp .;(後略) - 【 第8刷にて修正 】
- [誤]
- 435ページ 「練習14-1の解答」中、15行目
- [誤]
} catch(IllegalArgumentException e) {
- [正]
} catch(NullPointerException e) { - 【 第3刷にて修正 】
- [誤]
- 443ページ ページ中程、「手順①」の2つ目のソースコード、1行目
- [誤]
junit4.10.jar - [正]
junit-4.10.jar - 【 第7刷にて修正 】
- [誤]
- 443ページ ページ中程、「手順②」のソースコード
- [誤]
>java -cp .;junit4.10.jar org.junit.JUnitCore AccountTest - [正]
>java -cp .;junit-4.10.jar org.junit.runner.JUnitCore AccountTest - 【 第7刷にて修正 】
- [誤]
- 444ページ ページ中程、図15-4中、大江のセリフ
- [誤]
複雑度については12.2節で紹介するよ - [正]
複雑度については15.2節で紹介するよ
- [誤]
- 592ページ 練習19-1の解答のコード 3行目
- [誤]
for(int i = 0; i < 50; i++) { - [正]
for(int i = 0; i <= 50; i++) { - 【 第5刷にて修正 】
- [誤]
- 598ページ A.2.4の参照
- [誤]
2.3.1項、p.64 - [正]
2.3.2項 -
備考:
※項の途中から参照するより、項の最初から読んだ方が理解しやすいと考え、あわせてページ数を削除しました。
- 【 第7刷にて修正 】
- [誤]
- 603ページ A.7.1の参照
- [誤]
7.4.2項 - [正]
7.4.3項 - 【 第8刷にて修正 】
- [誤]
- 617ページ 索引語 「Arraysクラス」の指す先
- [誤]
java.util.Arraysパッケージ - [正]
java.util.Arraysクラス - 【 第11刷にて修正 】
- [誤]
- 622ページ INDEX内
- [誤]
「う」の項目から「オープンソースソフトウェア…235」を削除 - [正]
「お」の項目を新設して「オープンソースソフトウェア…235」を移動 - 【 第9刷にて修正 】
- [誤]
- 626ページ INDEX「れ」内、「列挙」のページ数
- [誤]
列挙
-型…115
-子…115 - [正]
列挙
-型…155
-子…155 - 【 第7刷にて修正 】
- [誤]
お問い合わせ
書籍の内容に関するお問い合わせはこちら。お答えできるのは本書に記載の内容に関することに限ります。