Javaプログラム診断カルテ-そのコードで本当に大丈夫か?

[表紙]Javaプログラム診断カルテ-そのコードで本当に大丈夫か?

紙版発売

A5判/480ページ

定価3,278円(本体2,980円+税10%)

ISBN 4-7741-2312-9

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

問題が起きにくいJavaでも,これだけ普及してくると,次々と何らかのトラブルが現れてきています。また最近では,問題のないコードというだけでは十分ではなく,きれいで問題のないコードを書かなければならないというように考え方も変わってきました。

本書は,経験豊富な著者が,どういうところに問題が発生しやすいか,またそれを改善するにはどうするかを,多数の事例をもとに丁寧に解説しています。Javaプログラマー必携です!

こんな方におすすめ

  • ひと通りJavaの勉強を終えた方
  • 実際の開発現場でJavaをお使いの方
  • 自分のプログラミングスキルを向上させたい方
  • 後学のために多様な事例を知りたい方

目次

本書の使い方

1章 さあ,Javaコードを書いてみよう

  • Javaプログラムの雛形
  • Javaプログラムが実行される仕組み
  • Javaのソースコードファイルとアクセス属性
  • print( )とprintln( )と新しいprintf( )メソッド
    • 診断 kプログラムをコンパイルできない!
    •    k名前付き定数を宣言できない!
    •    kmain( )メソッドから変数にアクセスできない!
    •    kchar型配列の初期化ができない!
    •    kコマンドライン引数の配列にアクセスできない!
    •    k変数の値を整形出力したい!

2章 Javaの基本事項を整理しておこう

  • Javaの識別子
  • Javaのキーワードと予約語
  • Javaの基本データ型
  • 新しい「スタティックインポート」とは?
  • 新しい「enum列挙型」とは?
  • 新しい「for-each形式のforループ構文」とは?
    • 診断 k新しいスタティックインポートの使い方がわからない!
    •    kchar型の最大値がおかしい!
    •    k変数の初期化方法の整理がつかない!
    •    k漢字文字を正しく表現できない!
    •    kすわ一大事,ループが止まらない!
    •    k「予期しない型」というエラーメッセージが表示される!
    •    kenum型とfor-each形式のforループ構文を使いたい!

3章 Javaの演算子を使いこなそう

  • Javaの演算子
    • 診断 k配列の要素数を求められない!
    •    k「ArrayIndexOutOfBoundsException」ってなに?
    •    k入れ子ループのとばしができない!
    •    k「ArithmeticException: / by zero」ってなに?
    •    k入れ子ループを抜けられない!
    •    k文字列連結演算子が使えない!
    •    kパーマネントループが正しく機能しない!
    •    k条件演算子をうまく使えない!
    •    k定数分岐がおかしい!
    •    kbyte型とshort型で>>>演算子の演算結果がおかしい!

4章 Javaのオブジェクトと参照型の取り扱いを押さえておこう

  • 参照変数とは?
  • オブジェクトコピーの意味
  • オブジェクト比較の意味
  • ガーベージコレクタの役割
  • Java配列の取り扱い
    • 診断 kオブジェクトの値を比較できない!
    •    k参照型の仮引数を使ったオブジェクトの入れ替えができない!
    •    kなぜか,配列を宣言できない!
    •    k配列を比較したら結果がおかしい!
    •    k配列をコピーしたら連鎖を断ち切れない!
    •    k多次元配列をコピーできない!
    •    kメソッド呼び出しの後で,もとの引数が変更されてしまう!
    •    kJavaの正規表現を使ってみたい!

5章 クラスの仕組みを理解しておこう

  • クラス型とクラスカプセル化の意味
  • パッケージとパッケージ属性との関係
  • クラス定義とインスタンスとの関係
  • 暗黙のthis参照とは?
    • 診断 kオブジェクトの生成時に初期化文字列を指定したい!
    •    kObjectクラスを拡張していないのにObject拡張クラスになってしまう!
    •    kクラスの一部の変数を初期化できない!
    •    kスーパークラスのコンストラクタを呼び出せない!
    •    kメソッドの中でthis参照が使えない!
    •    kequals( )メソッドの振る舞いがおかしい!
    •    kコンパイル済みのクラスファイルにアクセスできない!
    •    k名前付きパッケージ内部のクラスにアクセスできない!
    •    kインスタンスメソッドとクラスメソッドの違いがよくわからない!

6章 Javaのオブジェクトとインターフェースに強くなろう

  • 継承とは?
  • 抽象クラスとは?
  • そもそもなんのためにJavaにはインターフェース型があるのか?
    • 診断 k抽象クラスのインスタンスを生成できない!
    •    kインターフェースを実装したらエラーになる!
    •    k2つのスーパークラスを継承したクラスを定義したい!
    •    kRunnable実装クラスのスレッドを始動できない!
    •    kクローンオブジェクトを作成したい!
    •    kcompareTo( )とequals( )は整合しないといけないの?
    •    k拡張クラスを定義したら複雑なエラーになってしまう!
    •    kObjectクラス型の汎用アルゴリズムを作りたい!

7章 Javaの例外を理解しておこう

  • 例外とは?
  • 例外の種類と取り扱い
    • 診断 kNullPointerException例外が投入されてしまう!
    •    kArithmeticException例外を回復処理したい!
    •    kFileNotFoundException例外に対処できない!
    •    kcatchブロックの例外型仮引数がエラーになる!
    •    kクラス独自の例外を投入して捕捉したい!
    •    kアサーションの使い方がよくわからない!

8章 Javaのスレッドを理解しておこう

  • スレッドとは?
  • スレッド間のリソース共有と同期の問題
  • デッドロックとは?
    • 診断 kタイマータスクを使ってプログラムを終了したい!
    •    kスレッドを直ちに終了したい!
    •    k別スレッドの終了を待ってスレッドを実行したい!
    •    kスレッドの優先順位設定がうまくいかない!
    •    k複数スレッド間で共有リソースを使いたい!(その1)
    •    k複数スレッド間で共有リソースを使いたい!(その2)
    •    kObjectクラスのwait( ),notify( ),notifyAll( )を使いたい!

9章 JavaのCollections Frameworkを使いこなそう

  • 新しい「汎用型用法(Generics)」とは?
  • 新しい「ボクシング/アンボクシング」とは?
  • 汎用型用法とボクシング/アンボクシングを試してみよう
    • 診断 k新しいボクシング機能を使いたい!
    •    k型安全なCollectionsを使いたい!
    •    kコンパレータを定義して配列要素を降順にソートしたい!
    •    k5.0でのEnumerationの実装方法がよくわからない!
    •    kマルチスレッド環境でLinkedListを使いたい!
    •    kTreeSetを使ったらClassCastException例外が投入されるのはなぜ?
    •    k生成時に降順並びのTreeMapオブジェクトを作成したい!
    •    k無名内部クラスを定義したい!

10章 Javaのファイル入出力ストリームを使いこなそう

  • Javaのファイル入出力ストリーム
  • ストリームをバッファリングするには?
  • ストリームをストレージラッピングするには?
  • オブジェクトをシリアライズ/デシリアライズするには?
    • 診断 kStringTokenizerを使ってテキストファイルをラインソートしたい!
    •    kStreamTokenizerを使ってテキストの単語を調べたい!
    •    kバイナリーファイルを突合して結果を整形出力したい!
    •    kオブジェクトのシリアライズができない!
    •    kオブジェクトのデシリアライズができない!
    •    kハッシュテーブルにデータを格納できない!
    •    kMatcherエンジンの正規表現を使ってテキストファイルを検索したい!

INDEX