1. bookFullTitle("Java入門", "著者A") は "Java入門 by 著者A"
  2. bookFullTitle("Effective Java", "Bloch") は "Effective Java by Bloch"
  3. bookFullTitle("リーダブルコード", "Boswell") は "リーダブルコード by Boswell"
  4. bookFullTitle("A", "B") は "A by B" (短い文字列)
  5. bookFullTitle("", "著者") は " by 著者" (空文字)
コース一覧
Java入門:基礎文法編
コンストラクタ

Java入門:基礎文法編

変数、制御構文、メソッド、クラス、継承、インターフェースなど Java とオブジェクト指向の基礎を、コードを書きながら学べる無料コースです。プログラミング初学者や、業務システム開発で Java を扱う必要がある社会人を対象としています。約 17 時間 (1 日 30 分 × 34 日) で 69 レッスンを修了でき、修了後は Spring などのフレームワーク学習や Java 認定試験への準備が無理なく進められます。

1
Hello, Java
01. はじめての Java プログラム5分
02. 複数行の出力5分
03. 変数を使った自己紹介5分
04. コメントを書く5分
05. 第 1 章まとめクイズ5分
2
変数と演算
01. 変数を宣言する5分
02. データ型の使い分け5分
03. 変数とデータ型クイズ5分
04. 四則演算と剰余5分
05. 税込価格を計算する5分
06. インクリメントとデクリメント5分
07. 比較演算子5分
08. 論理演算子5分
09. 演算子の優先順位5分
10. 文字列の連結5分
11. 型変換 (キャスト)5分
12. 第 2 章 まとめクイズ5分
3
条件分岐
01. if 文の基本5分
02. if-else 文5分
03. else if で複数分岐5分
04. 成績判定プログラム12分
05. うるう年を判定する5分
06. switch 文5分
07. 三項演算子5分
08. じゃんけんの勝敗判定15分
09. FizzBuzz の判定部分5分
10. 第 3 章 まとめクイズ5分
4
繰り返し
01. for 文の基本5分
02. 1 から N までの合計5分
03. 九九の段を作る5分
04. while 文5分
05. カウントダウン5分
06. do-while 文5分
07. 二重ループ5分
08. break と continue5分
09. FizzBuzz 完成5分
10. 繰り返しクイズ5分
11. 第 4 章 まとめクイズ5分
5
メソッド
01. メソッドを定義する5分
02. 引数を受け取るメソッド5分
03. 戻り値を返す5分
04. 複数の引数を取るメソッド5分
05. メソッドのオーバーロード5分
06. メソッドクイズ5分
07. BMI を計算するメソッド5分
08. 第 5 章 まとめクイズ5分
6
配列
01. 配列の基本5分
02. 配列の要素にアクセス5分
03. 配列を for で走査5分
04. Javaで配列の合計・平均を求める方法(forループ)5分
05. 配列の平均5分
06. 配列の最大値5分
07. 配列の線形探索12分
08. 拡張 for ループ5分
09. 配列クイズ5分
10. 第 6 章 まとめクイズ5分
7
クラスとオブジェクト
01. クラスを定義する5分
02. クラスにフィールドを持たせる12分
03. クラスにメソッドを定義する5分
04. インスタンスを作る5分
05. コンストラクタ5分
06. this キーワード5分
07. カプセル化 (private と getter)12分
08. Person クラスを作る5分
09. Product クラスで税込価格15分
10. 銀行口座クラス15分
11. toString のオーバーライド5分
12. クラスとオブジェクト クイズ5分
13. Java 入門 最終クイズ5分

コンストラクタ

new した直後は、まだ空っぽ

前のレッスンで new を覚えました。ただ、いまの書き方だと、作ったあとにフィールドを 1 つずつ埋める作業が残ります。

Java

Cat c = new Cat(); c.name = "タマ"; c.age = 3;

本当にやりたいのは 1 行目だけなのに、3 行かかっています。しかも c.age = 3; を書き忘れても Java は何も言いません。int のフィールドは 0、String のフィールドは null という初期値のまま放置され、あとから null が混ざった文字列が出てきて、ようやく気づきます。猫が 10 匹に増えれば、この埋め忘れは 10 回ぶんの地雷になります。

値を渡してから作る

そこで、new のカッコの中に値を渡せるようにします。そのための書き方が コンストラクタ です。

Java

class Cat { String name; int age; Cat(String n, int a) { name = n; age = a; } } Cat c = new Cat("タマ", 3);

Cat(String n, int a) の行がコンストラクタです。ふつうのメソッドと違うところは 2 つあります。

  • 名前を クラス名とまったく同じ にする
  • 戻り値の型を書かない。void も書かない

この 2 つが揃っているときだけ、Java はこれを「new されたときに動くもの」として扱います。new Cat("タマ", 3) と書いた瞬間に中の 2 行が走り、フィールドが埋まった状態の猫が返ってきます。もう埋め忘れようがありません。

解説

public void Cat(String n, int a) のように戻り値の型を書いてしまうと、Java はこれをコンストラクタではなく「たまたま Cat という名前のメソッド」として読みます。クラス定義の側はエラーにならず、離れた場所の new Cat("タマ", 3) だけが赤くなるので、原因にたどり着きにくい間違いです。

引数ありを書くと、引数なしが消える

これまで new Cat() と書けていたのは、コンストラクタを 1 つも書いていないクラスに対して、Java が引数なしのものを黙って用意してくれていたからです。

自分でコンストラクタを 1 つでも書くと、この「黙って用意」は止まります。

Java

Cat c = new Cat(); // constructor Cat in class Cat cannot be applied to given types

さっきまで動いていた行が、Cat(String n, int a) を足しただけで赤くなります。引数なしも使いたいなら、そちらも自分で書き足してください。

やってみよう

右のエディタで bookFullTitle(String title, String author) を完成させます。本のタイトルと著者を受け取って、1 本の文字列にまとめて返すメソッドです。区切りに挟む文字は、前後の半角スペースまで課題の要件どおりに合わせてください。

まずはメソッドの中で直接組み立てて構いません。テストが緑になったら、Book クラスを自分で書いて、コンストラクタでタイトルと著者を受け取り、その値を使って文字列を組み立てるメソッドを足す ─ という形に書き換えてみてください。「作るときに値を渡す」という感覚は、書き換えたときにいちばんはっきり分かります。

要件

  1. クラス名は Solution、メソッド名は bookFullTitle、引数は String title と String author の 2 つにすること
  2. 戻り値の型は String で、title + " by " + author の形の文字列を返すこと
  3. title と author の間に挟む文字列は by (前後に半角スペース 1 つずつ) を厳密に守ること

入出力例

bookFullTitle("Java入門", "著者A") → "Java入門 by 著者A" bookFullTitle("Effective Java", "Bloch") → "Effective Java by Bloch" bookFullTitle("リーダブルコード", "Boswell") → "リーダブルコード by Boswell" bookFullTitle("A", "B") → "A by B" bookFullTitle("", "著者") → " by 著者"

ヒント

`Java` の文字列結合は `+` 演算子で行います。`title + " by " + author` のように `String` を `+` でつなぐと 1 つの新しい `String` ができます

間に挟む文字列は ` by ` です。スペースの有無や大文字小文字 (`By` ではなく `by`) を厳密に守ってください

引数を受け取る順番は宣言と同じ位置で決まります。`bookFullTitle(title, author)` の順番でメソッド側にそのまま流れ込むので、入れ替える必要はありません

生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

関連レッスン

  • this キーワード

    this は「このオブジェクト自身」を指す参照です。フィールドと引数の名前衝突を解決したり、メソッドチェーンを書いたり、別のコンストラクタを呼んだりするために使います。

  • カプセル化 (private と getter)

    `private` フィールドと `public` な getter / setter を使って、データを安全に守る「カプセル化」を学ぼう。負の入金を弾く `safeAccount(int initial, int deposit)` を書く。

  • Person クラスを作る

    Person クラスを設計しながら、フィールド・コンストラクタ・メソッドの基本を身につけよう。インスタンスから自己紹介の文字列を取り出す課題に挑戦する。

  • Product クラスで税込価格

    商品を表す Product クラスを設計し、税込価格を返すメソッドをクラスの中に閉じ込める練習を通じて、オブジェクト指向の最小単位を体に馴染ませる。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • フィールドクラスが持つデータ
  • コンストラクタインスタンス生成時の初期化処理
  • メソッドクラスに属する関数
  • クラスデータと振る舞いを束ねる単位
  • 戻り値呼び出し元への返答を表す点線矢印
  • 引数位置引数=順番で渡す。
  • テストバグを見つける工程
main.java
学習モード
エディタを読み込んでいます

メモ

コンストラクタ

⌘S で保存