本格学習 Java入門
[改訂3版]

書籍の概要

この本の概要

既存の技術やシステム開発に止まらず,最新技術や大規模システムなどJavaを利用する様々な場面で必須の内容を厳選して掲載し,豊富なサンプルプログラムとともに説明しています。本書はJavaの文法やデータの入出力といった基礎からイベント処理・ネットワークプログラミングまで丁寧に解説し,簡単なゲームプログラミングを作成して行きます。Javaの最新版JDK 11に対応したことで新機能の1つである「JShell」を活用することで,はじめてJavaを学ぶ方でも無理なく理解できます。

こんな方におすすめ

  • Javaを初めて学ぶ方
  • Jshellに触れてみたい方

目次

1章 プログラミング言語Java

1-1 Javaとは

  • 1-1-1 Javaの歴史
  • 1-1-2 Javaの特徴

1-2 プログラム動作の仕組み

  • 1-2-1 プログラムが動作するまで
  • 1-2-2 Javaプログラムを動かすもの

2章 JShellによるJavaプログラミング体験

2-1 JShell

  • 2-1-1 JShellとは
  • 2-1-2 JShellの起動
  • 2-1-3 命令の入力と実行
  • 2-1-4 命令の編集
  • 2-1-5 命令の再実行

2-2 JShellを使いこなそう

  • 2-2-1 履歴機能(カーソル上下)
  • 2-2-2 補完機能(Tabキー)
  • 2-2-3 ドキュメント表示機能(Tabキー×2)
  • 2-2-4 保存と読み込み(/save, /open

2-3 プログラムの基本

  • 2-3-1 文とセミコロン
  • 2-3-2 ブロック
  • 2-3-3 インデントとフリーフォーマット
  • 2-3-4 コメント(注釈)

2-4 いろいろな「Hello.」

  • 2-4-1 変数を使ったHello.
  • 2-4-2 メソッドを使ったHello.
  • 2-4-3 クラスを使ったHello.
  • 2-4-4 GUIを使ったHello.

2-5 データの表示

  • 2-5-1 データを表示し改行する(System.out.println())
  • 2-5-2 データを表示する(System.out.print())
  • 2-5-3 数字や文字の表示

3章 型と変数

3-1 基本データ型の種類

  • 3-1-1 基本データ型の概要
  • 3-1-2 整数型
  • 3-1-3 浮動小数点型
  • 3-1-4 文字型
  • 3-1-5 論理型
  • 3-1-6 書式を指定してデータを表示する(Sysmtem.out.printf())
  • 3-1-7 桁などを指定した表示

3-2 変数

  • 3-2-1 変数と定数
  • 3-2-2 変数の宣言
  • 3-2-3 変数・定数への代入と表示
  • 3-2-4 変数の宣言と初期化
  • 3-2-5 型推論による変数宣言
  • 3-2-6 変数の有効範囲(スコープ)

3-3 キャスト

  • 3-3-1 ワイドニング変換
  • 3-3-2 ナローイング変換
  • 3-3-3 型のキャスト
  • 3-3-4 異なる種類の型へのキャスト

3-4 配列

  • 3-4-1 配列の概要
  • 3-4-2 配列の宣言
  • 3-4-3 配列の作成
  • 3-4-4 配列要素へのアクセス
  • 3-4-5 要素の自動生成とlength
  • 3-4-6 配列の代入
  • 3-4-7 多次元配列
  • 3-4-8 配列操作で発生するエラー

3-5 参照型

  • 3-5-1 String
  • 3-5-2 length()メソッド
  • 3-5-3 その他のメソッド

3-6 列挙型

  • 3-6-1 列挙型の書式
  • 3-6-2 列挙型の使い方

4章 演算子

4-1 演算子の種類

  • 4-1-1 演算子の概要
  • 4-1-2 演算子の優先順位

4-2 代入演算子

  • 4-2-1 左辺の値を右辺に設定する
  • 4-2-2 代入と型

4-3 算術演算子

  • 4-3-1 四則演算の実行
  • 4-3-2 除算する際の注意
  • 4-3-3 文字の演算
  • 4-3-4 文字列の加算

4-4 比較演算子

  • 4-4-1 同じ型の比較
  • 4-4-2 異なる型の比較

4-5 論理演算子

  • 4-5-1 論理演算の実行
  • 4-5-2 複数の論理演算子を使用する
  • 4-5-3 短絡評価

4-6 内部表現に関わる演算子

  • 4-6-1 2進数
  • 4-6-2 2の補数
  • 4-6-3 シフト演算子
  • 4-6-4 ビット演算子

4-7 二項演算子以外の演算子

  • 4-7-1 単項演算子
  • 4-7-2 インクリメント/デクリメント演算子
  • 4-7-3 条件演算子

5章 条件判断

5-1 単純な条件分岐(if)

  • 5-1-1 if文
  • 5-1-2 if else文
  • 5-1-3 if else文の応用
  • 5-1-4 複数の条件式

5-2 複数の条件分岐(switch)

  • 5-2-1 switch文
  • 5-2-2 break文
  • 5-2-3 switch文の応用

6章繰り返し 127

6-1 指定回数の繰り返し

  • 6-1-1 for文
  • 6-1-2 式の設定
  • 6-1-3 式の省略と無限ループ

6-2 条件指定の繰り返し

  • 6-2-1 while文(先判断)
  • 6-2-2 do while文(後判断)

6-3 繰り返しの制御

  • 6-3-1 繰り返し処理の多重化
  • 6-3-2 break文(強制終了)
  • 6-3-3 continue文(中断)
  • 6-3-4 ラベル

6-4 拡張for文

  • 6-4-1 拡張for文とfor文の違い

7章 メソッド

7-1 Javaプログラムの入力と実行

  • 7-1-1 プログラムの入力
  • 7-1-2 プログラムのコンパイル(翻訳)
  • 7-1-3 プログラムの実行
  • 7-1-4 プログラム実行時に発生するエラー

7-2 メソッドの基本

  • 7-2-1 メソッドを使った簡単なプログラム
  • 7-2-2 メソッドの書き方

7-3 引数と戻り値

  • 7-3-1 引数
  • 7-3-2 複数の引数
  • 7-3-3 戻り値
  • 7-3-4 return文
  • 7-3-5 引数と異なる型の戻り値

7-4 オーバーロード

  • 7-4-1 同じ名前を持つメソッド
  • 7-4-2 オーバーロードの活用

7-5 メソッド呼び出し

  • 7-5-1 メソッドからのメソッド呼び出し
  • 7-5-2 再帰呼び出し

8章 クラス

8-1 オブジェクトとクラス

  • 8-1-1 オブジェクト
  • 8-1-2 クラス
  • 8-1-3 インスタンス

8-2 クラスの作成

  • 8-2-1 分数クラス
  • 8-2-2 インスタンス
  • 8-2-3 設計図の改良
  • 8-2-4 this 参照
  • 8-2-5 コンストラクタ
  • 8-2-6 toString( )

8-3 クラスの継承

  • 8-3-1 クラスの継承とは
  • 8-3-2 継承
  • 8-3-3 継承とコンストラクタ
  • 8-3-4 super( )
  • 8-3-5 再定義(オーバーライド)

8-4 ラッパークラス

  • 8-4-1 ラッパークラスとは
  • 8-4-2 ラッパークラスの作成方法

8-5 パッケージ

  • 8-5-1 パッケージとクラス
  • 8-5-2 パッケージ名を使ったパッケージの利用
  • 8-5-3 importによるパッケージの利用

8-6 static修飾子

  • 8-6-1 静的変数(クラス変数)
  • 8-6-2 静的メソッド
  • 8-6-3 インナークラス

8-7 アクセス修飾子

  • 8-7-1 アクセス修飾子とは
  • 8-7-2 データの保護

9章 例外処理

9-1 例外とは

  • 9-1-1 プログラムを安全に動作させるには
  • 9-1-2 例外の種類

9-2 例外処理の記述

  • 9-2-1 例外捕捉(try catch)
  • 9-2-2 例外処理を他に任せる(throws)
  • 9-2-3 例外クラスの作成

10章 データの入出力

10-1 キーボードからの入力

  • 10-1-1 コマンドライン引数
  • 10-1-2 コマンドライン引数の型変換
  • 10-1-3 Scannerを利用したデータ入力

10-2 ファイルからのスキャン

  • 10-2-1 1行のスキャン
  • 10-2-2 try-with-resource

10-3 インターネット上のデータ読み込みとストリーム

  • 10-3-1 データを読み込むには

10-4 ファイル出力

  • 10-4-1 FileWriter

11章 マルチスレッド

11-1 マルチスレッドの体験

  • 11-1-1 シングルスレッドの処理
  • 11-1-2 マルチスレッドの処理

11-2 マルチスレッドプログラムの作成

  • 11-2-1 Threadクラスの継承
  • 11-2-2 Runnableインタフェースの実装
  • 11-2-3 同期
  • 11-2-4 状態

12章 ネットワークプログラミング

12-1 通信の仕組み

  • 12-1-1 アドレス
  • 12-1-2 ポート番号とソケット
  • 12-1-3 クライアント・サーバモデル

12-2 クライアントの作成

  • 12-2-1 クライアントソケットの作成
  • 12-2-2 ソケットからのデータ読み込み
  • 12-2-3 クライアントプログラムの作成

12-3 サーバの作成

  • 12-3-1 サーバソケットの作成
  • 12-3-2 クライアントとの接続
  • 12-3-3 クライアントへの出力
  • 12-3-4 サーバプログラムの作成
  • 12-3-5 プログラムの実行

12-4 プログラムの改良

  • 12-4-1 クライアントプログラムの改良
  • 12-4-2 サーバプログラムの改良
  • 12-4-3 改良プログラムの実行

12-5 複数のクライアントへの対応

  • 12-5-1 サーバプログラムの作成
  • 12-5-2 プログラムの実行

13章 GUIとイベント処理

13-1 GUIの作成

  • 13-1-1 Swingによるフレームの作成
  • 13-1-2 コンポーネントとコンテナ
  • 13-1-3 レイアウトマネージャ

13-2 イベント処理

  • 13-2-1 イベントソースとイベントリスナー
  • 13-2-2 イベント処理プログラム
  • 13-2-3 イベントの種類
  • 13-2-4 マウスのイベント処理

13-3 グラフィックスとアニメーション

  • 13-3-1 メッセージの出力
  • 13-3-2 グラフィックス
  • 13-3-3 アニメーション

13-4 ゲームプログラミング

  • 13-4-1 キー入力の判定
  • 13-4-2 フォーカス
  • 13-4-3 TinyPongの作成

著者プロフィール

佐々木整(ささきひとし)

1968年生まれ,岩手県出身
拓殖大学工学部教授
専門は教育情報工学で,普段はICTを活用した教育システムの研究に従事。
JavaはJDK βを1995年に使い始め,1996年に秀和システムより『はじめてのJava』を刊行して以来の付合い。しかし,初めて学んだプログラミング言語はPascalであったため,できればPascal,しかもTurbo Pascalを使ってプログラミングをしたい,「本格学習 Pascal入門」を書きたい・・・などとと思っているが,最近は大人の事情でJavaでもPascalでもなく,JavaScriptとPythonでプログラミングをすることがほとんど。