初めてプログラミングを学ぶ人を対象にした“スラスラわかる”シリーズの新刊です。本書では、「プログラミングやJava関連の知識はゼロ」という状態から、Java言語・プログラミングの基礎知識や作法、基本構文、基本テクニックなどを無理なく習得し、かつプログラムが自力で作れるようになるところまで、しっかりとフォローします。豊富なイラスト・図解と丁寧な解説・サンプルプログラムで、Java/Androidアプリ開発で必要なJava言語の基礎をしっかり身につけることができます。
Javaの基礎固めをしたい方、Androidアプリを作りたいけれどJava言語がわからないという方はもちろんのこと、ほかの入門書で挫折した方やプログラミングに苦手意識を持っている方にもおすすめの一冊です。
第1章 Javaプログラミングの基礎
1.1 Javaの全体像
JRE(Java SE Runtime Environment)
JDK(Java SE Development Kit)
1.2 Javaの用途
Androidアプリ
Webサービス
1.3 プログラムとは?
現実世界でのプログラム
コンピュータでのプログラム
1.4 Javaでのプログラム
ソースコードの作成
コンパイル
実行
1.5 Javaでプログラムを作るための環境
標準のJavaツールとメモ帳などのエディタを使う方法
統合開発環境(IDE)を使う
1.6 Javaプログラムの基本ルール
簡単なプログラム
第2章 値と演算
2.1 値
2.2 整数
int型
long型
short型
byte型
文字コード(char型)
2.3 小数
double型
float型
誤差
接尾語による型の明示的な指定
2.4 真偽値
2.5 演算子
算術演算子
比較演算子
論理演算子
条件AND / OR演算子
三項演算子
2.6 演算の注意点
異なる型同士の演算
足し算、引き算、掛け算のオーバーフロー
割り算の桁落ち
2.7 式
式の演算子の優先順位
2.8 2進数の仕組み
2進数で整数を扱う
2進数で負の整数を扱う
2進数で小数を扱う
第3章 変数
3.1 変数
宣言
代入
参照
3.2 型
基本型(プリミティブ型)
参照型(リファレンス型)
3.3 変数の宣言
変数名の付け方
変数宣言と代入
3.4 変数への代入
代入の評価順序
3.5 変数の参照
変数の初期値とnull
3.6 代入演算子
代入演算子
再帰代入演算子
インクリメント演算子、デクリメント演算子
3.7 型変換とキャスト
拡大変換
キャスト変換
第4章 文字
4.1 文字と文字列
4.2 String型
変数の利用
文字列の連結
Javaライブラリの機能〜メソッドの利用
文字列の長さを調べる
文字列を抜き出す
4.3 文字エンコーディング
文字セット(文字集合)
文字エンコーディング
4.4 エスケープシーケンス
第5章 日付
5.1 Javaと日付
日付の管理単位
5.2 Date型
日付を管理する型
インポート宣言
インスタンスの作成
5.3 GregorianCalendar型
カレンダー
現在の日付を取得する
指定した日付を取得する
カレンダーとフィールド
日付の取得と変更
日付の計算
タイムゾーン
5.4 日付を文字列に変換する
SimpleDateFormat型
ロケール
第6章 コレクション
6.1 コレクションとは?
コレクションの機能
6.2 リスト
リストの基本操作
アルゴリズムの違いを理解する
6.3 セット
要素の追加
要素の削除
要素が含まれているか確認する
6.4 マップ
マップの作成
要素の追加
要素の削除
要素の取得
6.5 コレクションの使い分け
6.6 配列
配列の作成
要素の取得と変更
第7章 制御構文
7.1 プログラムの処理の流れ
7.2 順次
7.3 分岐
if
switch
7.4 反復
while
do-while
for
拡張for
breakとcontinue
第8章 オブジェクト指向
8.1 オブジェクト指向とは?
大規模なプログラムの分割
オブジェクト指向の特徴
8.2 オブジェクト指向の概念
カプセル化
継承
ポリモルフィズム
動的束縛
8.3 オブジェクト指向とプログラミング
単一継承と多重継承
オブジェクト、クラス、インスタンス
Javaでのオブジェクト指向
第9章 クラスの基礎
9.1 クラスの定義
クラス用ファイルの作成
クラスの定義(class)
フィールドの定義
メソッドの定義
9.2 インスタンスの作成
9.3 カプセル化
9.4 継承
extends
extendsの省略とObjectクラス
9.5 動的束縛とポリモルフィズム
動的束縛の利用
ポリモルフィズムの利用
第10章 クラスの応用
10.1 コンストラクタ
デフォルトコンストラクタ
10.2 this
10.3 オーバーライド
クラスのオーバーライド
10.4 オーバーロード
オーバーロードの利用
10.5 オーバーライドとオーバーロードの違い
10.6 final
メソッドへのfinal指定
クラスへのfinal指定
10.7 抽象メソッドと抽象クラス
抽象クラスと抽象メソッドの具体例
10.8 内部クラス
内部クラス内のthisの扱い
無名内部クラス
10.9 参照型のキャスト
基本型と参照型のキャストの違い
10.10 静的フィールドと静的メソッド
静的フィールド
静的メソッド
静的メソッドの注意点
静的フィールド、静的メソッドの用途
定数
10.11 列挙型(enum型)
列挙型の定義
列挙型のメリット
第11章 名前空間とスコープ
11.1 名前空間
package
import
11.2 スコープ
Javaでのスコープ
privateスコープ
デフォルトスコープ
protectedスコープ
publicスコープ
スコープ使い分けの指針
第12章 インターフェイス
12.1 インターフェイスとは?
複数のクラスから共通点を抜き出す
12.2 インターフェイスの実装方法
家電クラスを作成する
インターフェイスを作成する
クラスにインターフェイスを実装する
インターフェイスによるポリモルフィズム
12.3 複数のインターフェイスの実装
同じメソッドを持つインターフェイス
変数の型によるメソッド呼び出しの制約
12.4 インターフェイスの継承
12.5 抽象クラスとの違い
is-a関係
has-a関係
第13章 ジェネリクス
13.1 ジェネリクスとは?
ジェネリクスの役割
13.2 ジェネリクスの実装
何でも扱える倉庫クラス
特定の物を保存できる倉庫クラス
ジェネリクスを使った倉庫クラス
複数の型パラメータ
13.3 ワイルドカード
第14章 例外
14.1 エラー処理と例外
エラーとは?
エラー処理
例外とは?
例外を利用しないエラー処理
例外を利用するエラー処理
14.2 例外の基礎
例外を検出する
複数の例外を検出する
必ず最後に実行する
例外の種類
例外の原因を調べる
14.3 例外を通知する
例外を作成する
例外を通知する
例外への対処方法のまとめ
第15章 スレッド
15.1 スレッドとは?
15.2 スレッドの基礎
スレッドを作成する
スレッドを起動する
スレッドの終了を待つ
もう1つのスレッド
15.3 スレッドセーフ
矛盾が発生する仕組み
synchronizedなメソッド
synchronizedブロック
第16章 ライブラリ
16.1 ライブラリとは?
16.2 Javaクラスライブラリ
java.lang
java.util
java.io
16.3 外部ライブラリ
外部ライブラリを組み込む
Eclipseでのクラスパスの指定方法
コマンドラインでのクラスパスの指定方法
16.4 ライブラリの作り方
Eclipseでのライブラリファイルの作り方
コマンドラインでのライブラリの作り方
第17章 リフレクションとアノテーション
17.1 リフレクションの基本
リフレクションとは?
Classクラスのインスタンスを取得する
クラス名からClassクラスのインスタンスを取得する
Classクラスのフィールドを取得する
クラスのインスタンスを作成する
フィールドの操作
メソッドの操作
リフレクションの危険性
17.2 アノテーションの利用
アノテーションの書き方
Java標準のアノテーション
独自のアノテーションを作成する
独自のアノテーションを利用する
次のステップへ
Appendix 付録 Java開発環境の準備
A.1 Java プログラムを作る環境
A.2 Pleiades All in One(Eclipse)を使う
Pleiades All in Oneのインストール
Eclipseの起動
プロジェクトの作成
クラスの作成
プログラムの入力
プログラムの実行
Eclipseの終了
A.3 標準のJava ツールとメモ帳を使う
Javaのインストール
環境変数の設定
メモ帳の起動
コンパイラの起動とプログラムの作成
プログラムの実行
チェックテストの解答例
Column
コンピュータは書いてあるプログラムどおりに動く
Javaで用意されていない数
演算子がない計算
インクリメント演算子、デクリメント演算子の呼び方
文字化け
コレクションフレームワーク
リスト、セット、マップの使われ方
オブジェクト指向は万能か?
フィールドやメソッドの定義順
好ましくない継承
もし動的束縛やポリモルフィズムがなかったら?
BigDecimalクラス
親の親のメソッドは呼び出せないのか?
メソッドにfinalは付けるべき?
複雑な内部クラスの仕様
インターフェイスの名前の付け方
なぜインターフェイスは多重継承ができるのか?
エラーを通知するだけ?
ラッパークラスの役割
入出力処理のtry〜finally句
ライブラリのライセンス
カレントフォルダの指定
ライブラリ化とソースコード
クラス名.classとClass.forName(""クラス名"")の使い分け
privateなフィールドを編集できて良いのか?
リフレクションやアノテーションの使い道
利用者用のJavaと開発者用のJava
Javaのバージョン