書籍概要

プロになるJava
―仕事で必要なプログラミングの知識がゼロから身につく最高の指南書

著者
発売日
更新日

概要

本書では,プログラミングを仕事にしたい,エンジニアとして働きたい方,およびほかの言語で開発しているがJavaも使えるようになりたいという方を対象に,Javaでプログラミングができるようになるための解説をわかりやすく丁寧に行います。

Javaは,企業システムの構築を得意とするプログラミング言語で,銀行でお金を振り込む,宅配便で荷物を送るといった業務システムで多く使われているほか,検索サイトやSNS,買い物サイトなどサービスの構築でも広く使われています。多くの業務システムで利用されており,Javaプログラマーの人材募集も多いことから,Javaエンジニアになりたい人も比較的多いという状況があります。本書では,そうした中でプロとしてJava開発に携われるようになるために必要なプログラミングの知識をゼロから解説しています。Javaをすでに使っているがもっとプログラムをきちんと書けるようになりたいという人にもおすすめです。

多くの「プログラミングの入門書」では,プログラミング言語の構文は丁寧に解説されていますが,プログラムの書き方の説明はあまりありません。本書ではJavaを対象として,プログラミングに入門できるように解説しています。プログラムを作るという体験を通して,プログラムが動くことの楽しさやまた難しさを感じてもらえることを目標としています。自転車に乗れるようになるために何が必要かというと,自転車のパーツの名前や働き,原理を知ることではありません。自転車に実際に乗って,何度かこけそうになったりこけたりして,徐々にうまく乗ることができるようになるものです。プログラミングも技能なので,文法を覚えてライブラリの使い方を知るだけではプログラムが組めるようにはなりません。実際にプログラムを組んで,動かなかったり動いたりしながら徐々にうまくプログラムが組めるようになります。本書ではこうしたプログラムの組み方をわかりやすく解説します。

本書では,第1部「Javaを始める準備」では,Javaの基本および開発環境のインストール方法について解説します。第2部「Javaの基本」では,JShellを使って基本的な計算や変数,標準API,GUI開発について解説します。第3部「Javaの文法」では,条件分岐と繰り返し,データ構造,メソッドについて解説します。第4部「高度なプログラミング」では,ファイルやネットワークでの入出力と例外,処理の難しさ,クラスとインタフェースを使ったプログラムの構成について解説します。第5部「ツールと開発技法」では,Maven,Javadoc,JUnit,IDE,バージョン管理,Gitについて解説します。第6部「Webアプリケーション開発」では,Spring Bootやデータベースを用いたWebアプリケーション開発について解説します。

本書で,プロとして仕事ができるためのJavaの基礎をしっかりと習得していきましょう。

こんな方におすすめ

  • 開発現場で使えるJava開発のノウハウを身に付けたい方
  • Javaによる開発を業務で行っている方

サンプル

目次

  • 目次
  • 本書の読み方・動作環境

第1部 Javaを始める準備
第1章 Java ってなんだろう

  • 1.1 Javaとは
    • 1.1.1 プログラミング言語とは
    • 1.1.2 Javaはどんなプログラミング言語なの?
    • 1.1.3 Javaで何ができるの?
    • 1.1.4 Javaの仕様とJDKディストリビューション
  • 1.2 Javaの情報源
  • COLUMN Java 公式キャラクター Duke

第2章 開発環境の準備と最初の一歩

  • 2.1 Oracle JDKのインストール
    • 2.1.1 Oracle JDKのダウンロード
    • 2.1.2 Oracle JDKのインストール
  • COLUMN Oracle 社はJavaを有償化した?
  • 2.2 IntelliJ IDEAのインストールと設定
    • 2.2.1 初心者の段階からIDEを!
    • 2.2.2 IntelliJ IDEAとは
    • 2.2.3 IntelliJ IDEAのダウンロードとインストール
    • 2.2.4 Toolbox Appの設定とIDEの起動
  • COLUMN IntelliJ IDEAのエディション
    • 2.2.5 IntelliJ IDEAの初期設定
  • 2.3 最初のプログラムを書いてみよう
    • 2.3.1 プロジェクトの作成
    • 2.3.2 IntelliJ IDEAの初期画面
    • 2.3.3 クラスの作成
    • 2.3.4 mainメソッドの実装
  • COLUMN 近年のJava IDE 事情

第2部 Javaの基本
第3章 値と計算

  • 3.1 JShellの起動
    • 3.1.1 ターミナルの起動
    • 3.1.2 JShellの起動
    • 3.1.3 JShellの終了
  • 3.2 値と演算
    • 3.2.1 整数
    • 3.2.2 構文エラー
    • 3.2.3 実数
    • 3.2.4 文字列
    • 3.2.5 例外
    • 3.2.6 プログラムがうまく動かない3 段階
  • 3.3 メソッドの呼び出し
    • 3.3.1 メソッドの呼び出し
    • 3.3.2 文字列の掛け算や引き算?
    • 3.3.3 メソッドのシグネチャ
    • 3.3.4 メソッドの使い方がわからないとき
    • 3.3.5 文字列のフォーマット
    • 3.3.6 formattedメソッドでの例外

第4章 変数と型

  • 4.1 変数
    • 4.1.1 複合代入演算子
    • 4.1.2 値に名前を付けるメリット
  • 4.2 型
    • 4.2.1 変数の型
    • 4.2.2 基本型と参照型
    • 4.2.3 変数の型を指定する
    • 4.2.4 文字を扱う型
    • 4.2.5 数値の型変換
    • 4.2.6 型の役割

第5章 標準API

  • 5.1 日付時刻
    • 5.1.1 APIとライブラリ
    • 5.1.2 現在日時を取得する
    • 5.1.3 パッケージとimport
    • 5.1.4 日付時刻の操作
    • 5.1.5 指定した日付時刻を扱う
    • 5.1.6 日付時刻の整形
    • 5.1.7 staticメソッドとインスタンスメソッド
  • 5.2 BigDecimal
    • 5.2.1 実数計算の誤差
    • 5.2.2 BigDecimalでの計算
    • 5.2.3 newによるBigDecimalオブジェクトの生成
    • 5.2.4 BigDecimalオブジェクト生成時の注意
    • 5.2.5 オブジェクトの生成の仕方の違い

第6章 SwingによるGUI

  • 6.1 Swingでのウィンドウ表示
    • 6.1.1 Swing
    • 6.1.2 ウィンドウを表示してみる
    • 6.1.3 入力領域の配置
    • 6.1.4 2つ目の入力領域
    • 6.1.5 ボタンを配置
    • 6.1.6 クラスとオブジェクト,インスタンス
    • 6.1.7 参照を扱う
  • 6.2 画面に絵を描いてみる
    • 6.2.1 ウィンドウの準備
    • 6.2.2 画像の準備
    • 6.2.3 図形の描画
  • 6.3 Javaの基本文法
    • 6.3.1 Javaの文法
    • 6.3.2 入力エラーの対処
    • 6.3.3 IntelliJ IDEAを使わずに実行する

第3部 Javaの文法
第7章 条件分岐

  • 7.1 論理型
    • 7.1.1 値の比較
    • 7.1.2 オブジェクトの大小比較
    • 7.1.3 オブジェクトが等しいかどうかの比較
    • 7.1.4 論理演算子
    • 7.1.5 条件演算子
  • 7.2 if 文による条件分岐
    • 7.2.1 if 文
    • 7.2.2 else 句
    • 7.2.3 else if
  • 7.3 switchによる条件分岐
    • 7.3.1 switch 文
    • 7.3.2 default 句
    • 7.3.3 switch 式
    • 7.3.4 古い形式のswitch

第8章 データ構造

  • 8.1 Listで値をまとめる
    • 8.1.1 List
    • 8.1.2 変更のできるList
    • 8.1.3 ジェネリクスによる型検査
    • 8.1.4 ジェネリクスの型推論
    • 8.1.5 ラッパークラス
  • 8.2 配列
    • 8.2.1 配列の初期化
    • 8.2.2 要素を設定した配列の初期化
    • 8.2.3 配列の要素の利用
    • 8.2.4 多次元配列
  • 8.3 レコードで違う種類の値を組み合わせる
    • 8.3.1 違う種類の値をListでまとめて扱う
    • 8.3.2 違う種類の値をまとめて扱うレコードを定義する
    • 8.3.3 レコードのオブジェクトを生成する
  • 8.4 Mapで辞書を作る
    • 8.4.1 Map
    • 8.4.2 変更可能なMap
    • 8.4.3 イミュータブル(不変)なオブジェクト

第9章 繰り返し

  • 9.1 ループ構文
    • 9.1.1 for 文の基本
    • 9.1.2 for 文の応用
    • 9.1.3 while 文
    • 9.1.4 do while 文
    • 9.1.5 ループのcontinueとbreak
  • 9.2 ループに慣れる
    • 9.2.1 デバッガーでループを覗く
    • 9.2.2 二重ループ
  • COLUMN i,jの次は?
    • 9.2.3 もう少しループの練習
    • 9.2.4 迷路ゲームを作る

第10章 データ構造の処理

  • 10.1 データ構造を拡張for 文で扱う
    • 10.1.1 基本for 文でのListの要素の処理
    • 10.1.2 拡張for 文によるListの要素の処理
    • 10.1.3 拡張for 文による配列の要素の処理
    • 10.1.4 値の集合の処理のパターン
  • 10.2 Stream
    • 10.2.1 IntelliJ IDEAによるStreamへの変換
    • 10.2.2 Streamの構成
    • 10.2.3 ラムダ式
    • 10.2.4 Streamソース
    • 10.2.5 終端処理
    • 10.2.6 中間処理
    • 10.2.7 Optional
  • 10.3 基本型のStream 処理
    • 10.3.1 IntStreamで整数の処理
    • 10.3.2 StreamとIntStreamの行き来

第11章 メソッド

  • 11.1 メソッドの宣言
    • 11.1.1 JShellでのメソッド宣言
    • 11.1.2 staticメソッドの宣言
    • 11.1.3 インスタンスメソッドの宣言
    • 11.1.4 IntelliJ IDEAにメソッドを宣言してもらう
  • 11.2 ラムダ式とメソッド参照
    • 11.2.1 ラムダ式
    • 11.2.2 メソッド参照
    • 11.2.3 IntelliJ IDEAでラムダ式とメソッド参照の変換
  • 11.3 メソッドの使いこなし
    • 11.3.1 メソッドのオーバーロード
    • 11.3.2 メソッド呼び出しの組み合わせ
  • COLUMN うまく名前を付けるのも実力のうち
    • 11.3.3 再帰とスタック

第4部 高度なプログラミング
第12章 入出力と例外

  • 12.1 ファイルアクセスと例外
    • 12.1.1 ファイル書き込み
    • 12.1.2 ファイル読み込み
    • 12.1.3 例外
    • 12.1.4 throwsで例外を押しつける
    • 12.1.5 try 句で例外に対処する
    • 12.1.6 検査例外と非検査例外
    • 12.1.7 例外を投げる
  • 12.2 ネットワークでコンピュータの外の世界と関わる
    • 12.2.1 サーバーとクライアント
    • 12.2.2 ソケット通信とTCP/IP
    • 12.2.3 OutputStreamでのデータ送信
    • 12.2.4 InputStreamでのデータ受信
    • 12.2.5 try-with-resources
  • 12.3 Webの裏側を見てみる
    • 12.3.1 HTTP
    • 12.3.2 HTTPクライアント
    • 12.3.3 HTTPSで安全なWebアクセス
    • 12.3.4 Webクライアントライブラリ
    • 12.3.5 Webサーバーを作る

第13章 処理の難しさの段階

  • 13.1 ループの難しさの段階
    • 13.1.1 他のデータを参照するループ
    • 13.1.2 隠れた状態を扱うループ
  • 13.2 状態遷移と正規表現
    • 13.2.1 状態遷移の管理とenum
    • 13.2.2 正規表現
  • 13.3 スタックとキュー
    • 13.3.1 スタックとキュー
    • 13.3.2 ツリーの探索
    • 13.3.3 メソッドの再帰呼び出しをスタックを使った処理に置き換える
    • 13.3.4 幅優先探索とキュー
    • 13.3.5 計算の複雑さの階層

第14章 クラスとインタフェース

  • 14.1 クラス
    • 14.1.1 クラスのメンバー
    • 14.1.2 アクセス制御(可視性)
    • 14.1.3 コンストラクタ
    • 14.1.4 this
    • 14.1.5 フィールド
    • 14.1.6 ネステッドクラスとインナークラス
  • 14.2 インタフェース
    • 14.2.1 インタフェースが欲しい状況
    • 14.2.2 インタフェースを使ってメソッドを統一的に扱う
    • 14.2.3 必要なメソッドを実装していないときのエラー
    • 14.2.4 実装を持ったメソッドをインタフェースに定義する
    • 14.2.5 インタフェースにおけるアクセス制御
    • 14.2.6 公称型と構造的部分型
  • 14.3 ラムダ式と関数型インタフェース
    • 14.3.1 関数型インタフェース
    • 14.3.2 標準APIで用意されている関数型インタフェース
  • 14.4 クラスとファイル
    • 14.4.1 ソースファイル
    • 14.4.2 classファイル
    • 14.4.3 コメント
    • 14.4.4 コマンドラインパラメータ

第15章 継承

  • 15.1 継承
    • 15.1.1 クラスの継承
    • 15.1.2 継承でのコンストラクタ
    • 15.1.3 Objectクラス
    • 15.1.4 メソッドのオーバーライド
    • 15.1.5 匿名クラス
  • 15.2 継承の活用
    • 15.2.1 差分プログラミング
    • 15.2.2 継承でデータを分類する
    • 15.2.3 継承とオブジェクト指向

第5部 ツールと開発技法
第16章 ビルドツールとMaven

  • 16.1 ビルドツールの必要性
  • 16.2 Mavenの基本
  • COLUMN Maven 以外のJavaビルドツール
  • 16.3 Mavenのモジュールとディレクトリ構成
    • 16.3.1 groupIdとartifactId
    • 16.3.2 Mavenプロジェクトのディレクトリ構成
  • 16.4 ライブラリとMaven Repository
    • 16.4.1 ライブラリへの依存
    • 16.4.2 Maven Central Repository
    • 16.4.3 Mavenプロジェクトへライブラリを追加する
  • 16.4.4 依存のscope
    • 16.4.5 pom.xmlへの依存の記述
    • 16.4.6 pom.xml 記述内容のプロジェクトへの反映
    • 16.4.7 Maven Central Repository のインデックス作成
    • 16.4.8 ライブラリの確認
    • 16.4.9 businessCalendar4Jの動作確認
    • 16.4.10 目的に合ったライブラリを見つける
  • 16.5 MavenのGoal

第17章 Javadocとドキュメンテーション

  • 17.1 Javadocとは
  • 17.2 ブラウザでJavadocを見る
    • 17.2.1 標準APIのJavadoc
    • 17.2.2 Javadocの読み方
    • 17.2.3 英語版のJavadoc
  • 17.3 IDEからJavadocを見る
  • 17.4 Javadocを書く
  • 17.5 JavadocのHTMLを生成する

第18章 JUnitとテストの自動化

  • 18.1 テストの自動化とは
    • 18.1.1 JUnitのセットアップと実行
    • 18.1.2 テストケースの実装,実装コードの修正
    • 18.1.3 その他のアサーションメソッド
  • 18.2 テスト自動化のヒント
    • 18.2.1 効果的にテストケースを書く
    • 18.2.2 テスト駆動開発
    • 18.2.3 GUIアプリケーションやWebアプリケーションのテスト
  • COLUMN 時間がないからテストは書かない?
  • 18.3 オリンピック開催年を判別するコードをテスト

第19章 IntelliJ IDEAを使いこなす

  • 19.1 補完機能を使いこなす
    • 19.1.1 補完の候補表示と補完確定
    • 19.1.2 import 文の補完
  • 19.2 Live Templateと後置補完

第20章 バージョン管理とGit

  • 20.1 アンドゥやファイルコピーによる履歴管理
    • 20.1.2 Local History
  • 20.2 バージョン管理システム
    • 20.2.1 Gitのインストール
  • 20.3 Git 連携を有効にする
  • 20.4 コミット
    • 20.4.1 コミット対象ファイルの選択
    • 20.4.2 コミットの実行
    • 20.4.3 ファイル追加時の確認ダイアログ
    • 20.4.4 変更したファイルの差分とコミット
    • 20.4.5 Gitログの確認
    • 20.4.6 .gitignoreファイルの作成
  • 20.5 ブランチ
    • 20.5.1 ブランチの作成と切り換え
    • 20.5.2 ブランチのマージ
  • 20.6 Git 誤操作後の復旧方法
    • 20.6.1 Amend
    • 20.6.2 Revert
    • 20.6.3 コミットのReset

第6部 Webアプリケーション開発
第21章 Spring BootでWebアプリケーションを作ってみる

  • 21.1 Webアプリケーションとフレームワーク
    • 21.1.1 Webアプリケーションとは
    • 21.1.2 Webアプリケーションの仕組み
    • 21.1.3 アプリケーションフレームワークとは
    • 21.1.4 フレームワークを利用するメリット
    • 21.1.5 Webアプリケーション開発に使える代表的なフレームワーク
  • 21.2 Spring Bootでタスク管理アプリケーションを作ってみる
    • 21.2.1 タスク管理アプリケーションの概要
    • 21.2.2 Webアプリケーション用のプロジェクトを作る
  • 21.3 RestControllerでWebアプリケーションの仕組みを学ぶ
    • 21.3.1 @RestControllerアノテーションでコントローラを作成する
    • 21.3.2 クライアントからのリクエストに応えるためのエンドポイントを作る
    • 21.3.3 helloエンドポイントにアクセスしてみる
    • 21.3.4 タスク管理アプリケーションをコマンドラインから起動する
  • 21.4 モデルを使ってアプリケーションの内部情報を保持する
    • 21.4.1 タスクの情報を保持するためのモデルの作成
    • 21.4.2 タスクを追加するエンドポイントの作成
    • 21.4.3 タスクを一覧表示するエンドポイントの作成
  • 21.5 ユーザーインタフェースの作成にテンプレートエンジンを活用する
    • 21.5.1 @Controllerアノテーションでコントローラを作成する
    • 21.5.2 テンプレートエンジン
    • 21.5.3 Thymeleafが使えるようにpom.xmlを修正する
    • 21.5.4 Thymeleaf 用のHTMLテンプレートを作る
    • 21.5.5 HomeControllerのhelloメソッドを修正する
    • 21.5.6 タスクの追加および一覧表示用のテンプレートを用意する
    • 21.5.7 HomeControllerにタスクの一覧表示機能のエンドポイントを実装する
    • 21.5.8 HomeControllerにタスクの追加機能のエンドポイントを実装する
    • 21.5.9 CSSを使ってテンプレートを装飾する

第22章 Webアプリケーションにデータベースを組み込む

  • 22.1 データベースとは
    • 22.1.1 DBMSの種類
    • 22.1.2 リレーショナルデータベースとは
    • 22.1.3 リレーショナルデータベースにアクセスするための言語「SQL」
    • 22.1.4 Javaによるデータベース接続とJDBC
  • 22.2 SQLでH2データベースを操作する
    • 22.2.1 H 2とは
    • 22.2.2 pom.xmlへの依存関係の追加
    • 22.2.3 application.propertiesへの設定の追加
    • 22.2.4 H 2コンソールを使ったデータベース接続
    • 22.2.5 テーブルを作成するCREATE 文
    • 22.2.6 テーブルにレコードを追加するINSERT 文
    • 22.2.7 テーブルに格納されたデータを取得するSELECT 文
    • 22.2.8 すでに登録されているレコードを更新するUPDATE 文
    • 22.2.9 テーブルに登録されているレコードを削除する
    • 22.2.10 タスク管理アプリケーションで使用するSQL 文の例
  • 22.3 Spring BootアプリケーションでSpring JDBCを使用する
    • 22.3.1 Spring JDBCとは
    • 22.3.2 pom.xmlへの依存関係の追加
    • 22.3.3 テーブル初期化用のスクリプトを用意する
    • 22.3.4 データベース操作用のクラスを作成する
  • COLUMN DI/DIコンテナとは
    • 22.3.5 HomeControllerクラスを修正する
    • 22.3.6 タスク情報の削除機能を追加する
    • 22.3.7 タスク情報の更新機能を追加する
  • おわりに

サポート

補足情報

練習問題の解答について

(2022年7月15日更新)

本書に掲載している「練習問題」の解答を下記にて掲載します。

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2022年7月14日最終更新)

Java 18,IntelliJ等の最新版に関する書籍情報

https://twitter.com/projava17/status/1544142803495972864にも記載しています。

P.10:本文下から4,5行目

「使用するインストーラーは(略)Java 17,またはそれ以降のバージョンのものを使ってください。」とありますが,Java 18ではWindowsの環境で文字化けが発生することがあります。

Java 17を使うか,次のページを参考にして文字化けを回避してください。

Windows+JDK18の実行時にコンソールで日本語が文字化けする
https://support.samuraism.com/jetbrains/trouble-shooting/windows_jdk18_garbled
P.32:「プロジェクト形式の選択」

最新版のIntelliJ IDEAでは新規プロジェクトのダイアログのデザインが少し異なっています。

紙面のスクリーンショットを参考にすると,「Maven Archtype」を選んでしまいがちですが,下記のように一番上の「新規プロジェクト」を選択してください。

FW3mGW_acAAuo7f.jpeg

P.458:■application. propertiesファイルに設定を追加
spring.datasource.initialization-mode=always
spring.sql.init.mode=always

※spring.datasource.initialization-modeは最新版では廃止されました。

訂正情報

※電子版では修正済み

P.v:本文6行目
設定によっては「\」が「¥」が
設定によっては「\」が「¥」

「が」が不要です。

P.4:本文下から4行目
Java Development Environment
Java Development Kit
P.21:本文3行目
(図20.20)
(図2.20)

「0」が不要です。

P.21:本文4行目
(図20.21)
(図2.21)

「0」が不要です。

P.28:最下部「MEMO」欄
この本では、以降の解説は日本語化を行った状態のIntelliJIDEAの画面で行っていますが、英語表記で困らない方、またはスキルアップのため英語に慣れたい方は是非英語のままで利用してみてください。
この本では、以降は日本語化を行った状態のIntelliJ IDEAの画面を掲載しています。英語表記で困らない方や、スキルアップのため英語に慣れたい方は是非英語のままで利用してみてください。
一周目を日本語で演習し、二周目は英語で演習することで英語に慣れていく方法もお勧めです。
P.32:本文下から6行目
Software Development Tool
Software Development Kit
P.88:「練習3.」
String.formatted("%tY年", today)を
String.format("%tY年", today)を
P.153:本文4行目
student ==> [kis, math, 80]
exam ==> [kis, math, 80]
P.177:本文10行目
System.out.print("o".repeat(i));
System.out.print("O".repeat(i));
P.188:src/main/java/projava/ForEachListSample.java 2行目
package projava;

public class ForEachListSample {
package projava;

import java.util.List;

public class ForEachListSample {
P.236:実行結果
ファイルがみつかりません:testa.txt
ファイルがみつかりません:test.txta
P.272:図13.1キャプション
状態遷移図
実数判定の状態遷移図
P.309:「14.3.3 コメント」前のパラグラフ
このときIntelliJ IDEAのリファクタリング機能が使えます。リファクタリング機能については、第19章「IntelliJ IDEAを使いこなす」で説明します。クラスが多くなってきたらパッケージに分類します。何度か経験すると、最初からある程度の目安がつくでしょう。
クラスが多くなってきたらパッケージに分類します。何度か経験すると、最初からある程度の目安がつくでしょう。IntelliJ IDEAでは[Ctrl] + [Alt] + [Shift] + [T]([Ctrl] + [T])を押すと、このような構成の変更を行う「リファクタリング」機能を呼びだすことができます。
P.320:図15.7キャプション
インスタンス化できない
インスタンス化できないことを示すエラー
P.325:src/main/java/projava/DiffSampleInherit.java P.325の17行目,19行目
        var image = new BufferedImage(600, 400, BufferedImage.TYPE_INT_RGB);
        var graphics = image.createGraphics();
        graphics.drawLine(10, 10, 400, 300);
        var image = new BufferedImage(250, 200, BufferedImage.TYPE_INT_RGB);
        var graphics = image.createGraphics();
        graphics.drawLine(10, 10, 220, 180);
P.325:src/main/java/projava/DiffSampleInherit.java P325の23行目、25行目
        var image = new BufferedImage(600, 400, BufferedImage.TYPE_INT_RGB);
        var graphics = image.createGraphics();
        graphics.drawRect(10, 10, 400, 300);
        var image = new BufferedImage(250, 200, BufferedImage.TYPE_INT_RGB);
        var graphics = image.createGraphics();
        graphics.drawRect(10, 10, 220, 180);
P.326:グレー背景箇所の1行目,3行目
var image = new BufferedImage(600, 400, BufferedImage.TYPE_INT_RGB);
var graphics = image.createGraphics();
graphics.drawLine(10, 10, 400, 300); // ここだけ違う
var image = new BufferedImage(250, 200, BufferedImage.TYPE_INT_RGB);
var graphics = image.createGraphics();
graphics.drawLine(10, 10, 220, 180); // ここだけ違う
P.326:■src/main/java/projava/DiffSampleInherit.java(1つめ)
var image = new BufferedImage(600, 400, BufferedImage.TYPE_INT_RGB);
var image = new BufferedImage(250, 200, BufferedImage.TYPE_INT_RGB);
P.326:■src/main/java/projava/DiffSampleInherit.java(2つめ)
g.drawLine(10, 10, 400, 300);
g.drawLine(10, 10, 220, 180);
P.327:■src/main/java/projava/DiffSampleInherit.ja(1つめ)
BufferedImage lineImage() {
static BufferedImage lineImage() {
P.327:■src/main/java/projava/DiffSampleInherit.ja(2つめ)
g.drawRect(10, 10, 400, 300);
g.drawRect(10, 10, 220, 180);
P.327:■src/main/java/projava/DiffSampleInherit.ja(2つめ)
BufferedImage rectImage() {
static BufferedImage rectImage() {
P.327:■src/main/java/projava/DiffSampleInherit.ja(3つめ)
BufferedImage lineImage() {
static BufferedImage lineImage() {
P.327:■src/main/java/projava/DiffSampleInherit.ja(3つめ)
g.drawLine(10, 10, 400, 300);
g.drawLine(10, 10, 220, 180);
P.328:■src/main/java/projava/DiffSampleInherit.java(1つめ)
var image = new BufferedImage(600, 400, BufferedImage.TYPE_INT_RGB);
var image = new BufferedImage(250, 200, BufferedImage.TYPE_INT_RGB);
P.328:■src/main/java/projava/DiffSampleInherit.java(2つめ)
BufferedImage lineImage() {
static BufferedImage lineImage() {
P.328:■src/main/java/projava/DiffSampleInherit.java(2つめ)
g.drawLine(10, 10, 400, 300);
g.drawLine(10, 10, 220, 180);
P.329:■src/main/java/projava/DiffSampleInherit.java(1つめ)
BufferedImage lineImage() {
static BufferedImage lineImage() {
P.331:■src/main/java/projava/DiffSampleInherit.java(2つめ)
BufferedImage createImage(Consumer drawer) {
static BufferedImage createImage(Consumer drawer) {
P.332:■src/main/java/projava/DiffSampleInherit.java
BufferedImage lineImage() {
    return createImage(g -> g.drawLine(10, 10, 400, 300));
 }
BufferedImage rectImage() {
    return createImage(g -> g.drawRect(10, 10, 400, 300));
 }
static BufferedImage lineImage() {
    return createImage(g -> g.drawLine(10, 10, 220, 180));
 }
static BufferedImage rectImage() {
    return createImage(g -> g.drawRect(10, 10, 220, 180));
 }
P.356:本文4行目
図17.5がjava.util.ListのJavadocです。
するとjava.util.ListクラスのJavadocのページにジャンプします(図17.5)。
P.371:本文2行目
バグを健在化させることができる
バグを顕在化させることができる
P.388:本文最終行
て使いこなせるようにしておきましょう。
て使いこなせるようにしておきましょう。最後に補完関連操作で紹介したIntelliJ IDEAのショートカットを表19.1に挙げておきます。
P.421:表21.1 設定項目「Spring Boot」の「設定値」
2.6.3、または「SNAPSHOT」や
デフォルト、または「SNAPSHOT」や
P.428:「プロジェクトを実行する」の下2行目
〜右側にある再生アイコンを
〜右側にある実行アイコンを
P.428:図21.17 キャプション
プロジェクトの再生アイコン
プロジェクトの実行アイコン
P.444:図21.31
time="x年x月x日";
time: “x年x月x日”
P.444:図21.31
Javaプログラム
Javaプログラムで用意したデータ

商品一覧