AndroidエンジニアのためのモダンJava
- 山田祥寛 著
 - 定価
 - 3,520円(本体3,200円+税10%)
 - 発売日
 - 2013.8.20[在庫なし]
 - 判型
 - B5変形
 - 頁数
 - 448ページ
 - ISBN
 - 978-4-7741-5878-5 978-4-7741-5968-3
 
サポート情報
概要
本書は、複雑かつ高度なAndroidアプリの開発に必要となる、Java言語の基礎を理解することに主眼を置いています。Android SDKについては触れず、Androidに関連するモダンJava(Java 5以降)のファンダメンタルな言語仕様を中心に解説を行います。また、解説中では、Androidエンジニアが知っておくべき最適化のテクニックを適宜紹介しています。JavaScriptやC++、Objective-Cでの開発経験のあるAndroidエンジニアが、Java言語に関する知識の底上げを目指す際、特に有効な一冊です。
こんな方にオススメ
- Javaの基礎的な知識を身に付けたいAndroid開発者
 - Java 5以降のモダンなコーディングスタイルを身に付けたい方
 
目次
第1章 イントロダクション
- 1.1 Android概観
- 1.1.1 Androidのアーキテクチャ
 - 1.1.2 Androidのバージョン
 
 - 1.2 AndroidとJava
- 1.2.1 Javaとは?
 - 1.2.2 Androidの特異な点
 
 
第2章 Java の基本
- 2.1 Javaプログラミングの基本
- 2.1.1 Hello, Javaアプリの作成
 - 2.1.2 ソースコードの全体像
 
 - Column サンプルファイルのインポート方法
 - 2.2 変数
- 2.2.1 識別子の命名規則
 - 2.2.2 より良い識別子のために
 
 - 2.3 データ型
- 2.3.1 基本型と参照型
 - 2.3.2 整数型
 - 2.3.3 浮動小数点型
 - 2.3.4 文字型
 - 2.3.5 真偽型
 
 - 2.4 リテラル
- 2.4.1 整数リテラル
 - 2.4.2 浮動小数点リテラル
 - 2.4.3 補足:数値リテラルにおける型の特定
 - 2.4.4 文字リテラル
 - 2.4.5 文字列リテラル
 
 - 2.5 型変換
- 2.5.1 暗黙的な変換
 - 2.5.2 縮小変換(キャスト)
 
 - 2.6 参照型
- 2.6.1 クラス型
 - 2.6.2 配列型
 - 2.6.3 ラッパークラス
 
 - 2.7 定数
- 2.7.1 定数の基本
 
 
第3章 演算子
- 3.1 算術演算子
- 3.1.1 浮動小数点数の演算には要注意
 - 3.1.2 非数値の演算(加算演算子)
 - 3.1.3 文字列の連続した結合に要注意
 - 3.1.4 除算とオペランドのデータ型
 - 3.1.5 インクリメント演算子とデクリメント演算子
 
 - 3.2 代入演算子
- 3.2.1 基本型と参照型による代入の違い
 
 - 3.3 比較演算子
- 3.3.1 同一性と同値性
 - 3.3.2 補足:「==」演算のその他の注意点
 - 3.3.3 条件演算子(?:)
 
 - 3.4 論理演算子
- 3.4.1 ショートカット演算(短絡演算)
 
 - 3.5 ビット演算子
- 3.5.1 ビット論理演算子
 - 3.5.2 ビットシフト演算子
 
 - 3.6 演算子の優先順位と結合則
- 3.6.1 優先順位
 - 3.6.2 結合則
 
 
第4章 制御命令
- 4.1 条件分岐
- 4.1.1 if命令 ― 単純分岐
 - 4.1.2 if命令 ― 多岐分岐
 - 4.1.3 if命令 ― ネスト構造
 - 4.1.4 補足:ブロックの{...}は省略可能
 - 4.1.5 補足:if命令によるコメントアウト
 - 4.1.6 switch命令
 
 - 4.2 繰り返し処理
- 4.2.1 while / do...while命令
 - 4.2.2 補足:無限ループ
 - 4.2.3 for命令
 - 4.2.4 拡張for命令
 - 4.2.5 break / continue命令
 
 
第5章 オブジェクト指向構文(クラスの基本)
- 5.1 クラスの基本
- 5.1.1 クラス名
 - 5.1.2 修飾子
 - 5.1.3 メンバーの記述順序
 
 - 5.2 フィールド
- 5.2.1 フィールド名
 - 5.2.2 修飾子
 - 5.2.3 デフォルト値
 
 - 5.3 メソッド
- 5.3.1 メソッド名
 - 5.3.2 引数(仮引数と実引数)
 - 5.3.3 戻り値
 - 5.3.4 修飾子
 - 5.3.5 thisキーワード
 
 - 5.4 メソッド(オーバーロード/可変長引数/再帰呼び出し)
- 5.4.1 メソッドのオーバーロード
 - 5.4.2 可変長引数のメソッド
 - 5.4.3 再帰呼び出し
 
 - 5.5 変数のスコープ
- 5.5.1 フィールドの有効範囲
 - 5.5.2 フィールドとローカル変数
 - 5.5.3 ブロックスコープ
 - 5.5.4 仮引数
 
 - 5.6 コンストラクター
- 5.6.1 コンストラクターの基本
 - 5.6.2 デフォルトコンストラクター
 - 5.6.3 コンストラクターのオーバーロード
 - 5.6.4 ファクトリーメソッド
 - 5.6.5 初期化ブロック
 
 - 5.7 クラスフィールド/クラスメソッド
- 5.7.1 クラスメソッド
 - 5.7.2 補足:ユーティリティクラス
 - 5.7.3 クラスフィールド
 - 5.7.4 クラス定数
 - 5.7.5 static初期化ブロック
 - 5.7.6 補足:初期化処理の実行タイミング
 
 - Column Javaの歴史
 
第6章 オブジェクト指向構文(カプセル化/継承/ポリモーフィズム)
- 6.1 カプセル化
- 6.1.1 アクセス修飾子
 - 6.1.2 インスタンスフィールドのアクセス権限
 - 6.1.3 補足:不変クラス
 
 - 6.2 継承
- 6.2.1 継承の基本
 - 6.2.2 メソッドのオーバーライド
 - 6.2.3 基底クラスのメソッドを呼び出す
 - 6.2.4 コンストラクター(継承時の挙動)
 - 6.2.5 フィールドの隠蔽
 - 6.2.6 継承/オーバーライドの禁止
 - 6.2.7 型変換(参照型)
 - 6.2.8 委譲
 
 - 6.3 ポリモーフィズム
- 6.3.1 抽象メソッド
 - 6.3.2 インターフェイス
 - 6.3.3 インターフェイスと抽象クラスとの使い分け
 
 - Column Javaのコーディング規約
 
第7章 オブジェクト指向構文(パッケージ/例外処理/その他)
- 7.1 パッケージ
- 7.1.1 パッケージの基本
 - 7.1.2 インポート
 - 7.1.3 単一型インポートとオンデマンドインポート
 - 7.1.4 補足:staticインポート
 
 - 7.2 例外処理
- 7.2.1 例外処理の基本
 - 7.2.2 finally句
 - 7.2.3 例外クラスの型
 - 7.2.4 例外をスローする ― throw命令
 - 7.2.5 検査例外と非検査例外
 - 7.2.6 例外をスローする際の留意点
 - 7.2.7 例外の再スロー
 - 7.2.8 例外クラスを拡張する
 
 - 7.3 enum型
- 7.3.1 enum型の導入前
 - 7.3.2 enum型の基本
 - 7.3.3 enum型の正体
 - 7.3.4 コンストラクター/メソッド/フィールドの定義
 - 7.3.5 補足:EnumSetクラスによるビットフィールド表現
 
 - 7.4 Objectクラス
- 7.4.1 Objectクラスの主なメソッド
 - 7.4.2 toStringメソッド
 - 7.4.3 equalsメソッド
 - 7.4.4 hashCodeメソッド
 - 7.4.5 cloneメソッド
 - 7.4.6 finalizeメソッド
 - 7.4.7 補足:compareToメソッド
 
 - 7.5 アノテーション
- 7.5.1 アノテーションの記述位置
 - 7.5.2 アノテーションの構文
 - 7.5.3 標準アノテーションの例
 - 7.5.4 自作アノテーションの定義
 - 7.5.5 補足:リフレクションの主なメソッド
 
 - 7.6 ネストしたクラス
- 7.6.1 staticメンバークラス
 - 7.6.2 非staticメンバークラス
 - 7.6.3 匿名クラス
 - 7.6.4 ローカルクラス
 
 - Column Javaをより深く学ぶための参考書籍
 
第8章 コレクション
- 8.1 コレクションフレームワークの基本
- 8.1.1 主なインターフェイスと実装クラス
 - 8.1.2 コレクションの基本構文
 - 8.1.3 基本的なコーディング手法
 - 8.1.4 コレクションを順番に処理する
 - 8.1.5 コレクションのラッピング
 
 - 8.2 リスト(Listインターフェイス)
- 8.2.1 ArrayList
 - 8.2.2 LinkedList
 - 8.2.3 リストの基本コード
 
 - 8.3 セット
- 8.3.1 セットの具体的なコード例
 
 - 8.4 マップ
- 8.4.1 HashMap
 - 8.4.2 IdentityHashMap / WeakHashMap
 - 8.4.3 LinkedHashMap / TreeMap
 - 8.4.4 補足:NavigableMap
 
 - 8.5 Deque(Queue)
- 8.5.1 ArrayDequeによるキュー/スタックの実装
 - 8.5.2 補足:QueueメソッドとStackメソッド
 
 - 8.6 ジェネリックス
- 8.6.1 ジェネリックス定義の基本
 - 8.6.2 境界ワイルドカード型
 - 8.6.3 ジェネリックメソッド
 
 
第9章 ストリーム
- 9.1 ストリームの基本
- 9.1.1 ストリームの分類
 
 - 9.2 さまざまなストリームの例
- 9.2.1 テキストファイルの読み書き
 - 9.2.2 補足:ファイル操作
 - 9.2.3 バイナリファイルの読み書き
 - 9.2.4 バイトストリーム→文字ストリームの変換
 - 9.2.5 読み書きのバッファリング処理
 - 9.2.6 Android環境でのファイル操作
 - 9.2.7 ファイルにランダムアクセスする
 - 9.2.8 オブジェクトをファイルに保存する
 - 9.2.9 出力ストリーム→入力ストリームの連結(パイプ)
 
 - 9.3 ネットワーク
- 9.3.1 ソケット通信
 - 9.3.2 HTTP通信
 - 9.3.3 構造化データを取得&解析する
 
 
第10章 スレッド
- 10.1 スレッドの基本
- 10.1.1 スレッドの作成&実行
 - 10.1.2 同期処理
 - 10.1.3 スレッドプール
 
 - 10.2 Android アプリにおけるスレッド処理
- 10.2.1 Handlerによるメインスレッドの操作
 - 10.2.2 AsyncTaskによる非同期処理
 - 10.2.3 ProgressDialogによる進捗表示
 - 10.2.4 AsyncTaskLoaderによる非同期処理
 
 
プロフィール
山田祥寛
千葉県鎌ヶ谷市在住のフリーライター。Microsoft MVPfor ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。書籍執筆を中心に、雑誌/ サイト記事、取材、講演までを手がける多忙な毎日。最近の活動内容は公式サイトを参照。