Javaのフィールドとは?オブジェクトごとに値を持つ変数の考え方

最終更新日

Schoo Java入門 初級【2026年版】

本記事は、Schooの「Java入門 初級【2026年版】」第5回「クラスとオブジェクト」を学ぶ前後に、Javaのフィールドの考え方を整理したい方向けのステップアップ学習記事です。

ただし、Schooを受講していない方でも、クラスを学び始めた段階で読み進められる内容にしています。

Schoo コースページ:Java入門 初級【2026年版】

フィールドは、オブジェクトが持つ値を入れておくための変数です。クラスの中に String name;int score; のように書くことで、Student オブジェクトが名前や点数を持てるようになります。

フィールドはオブジェクトの中に残る値

次の Student クラスでは、namescore がフィールドです。

ファイル名: FieldBasicExample.java

public class FieldBasicExample {
    public static void main(String[] args) {
        Student s1 = new Student("山田", 80);

        System.out.println(s1.name + "さん:" + s1.score + "点");
    }
}

class Student {
    String name;
    int score;

    Student(String name, int score) {
        this.name = name;
        this.score = score;
    }
}

String name;int score; は、Student オブジェクトが持つ値の置き場所です。new Student("山田", 80) によってオブジェクトが作られると、そのオブジェクトの name には "山田"score には 80 が入ります。

同じクラスから作ってもフィールドの値は別々

クラスは1つでも、new で作られたオブジェクトは別々です。そのため、同じ name、同じ score というフィールド名を使っていても、実際に入っている値はオブジェクトごとに分かれます。

Student s1 = new Student("山田", 80);
Student s2 = new Student("佐藤", 90);

s1.score = 75;

この例で s1.score75 に変更しても、s2.score90 のままです。s1s2 は、それぞれ自分のフィールドを持っているからです。

フィールドの値がオブジェクトごとに分かれる様子

次のツールでは、同じ Student クラスから作った s1s2 が、それぞれ別の namescore を持つ様子を確認できます。

選択中のプログラム


  

見るポイント:namescore はクラスに書いたフィールドですが、値は s1s2 のオブジェクトごとに分かれて入ります。

クラスに書くフィールド

class Student

String name;
int score;

new で作られたオブジェクトごとの値

s1 : Student

name = “
score =

s2 : Student

name = “
score =

フィールドとローカル変数の違い

フィールドと混同しやすいものに、メソッドやコンストラクタの中で作るローカル変数があります。

class Student {
    String name; // フィールド

    Student(String name) { // name は引数
        this.name = name;
    }
}

左側の this.name は、オブジェクトが持つフィールドを表します。右側の name は、コンストラクタに渡されてきた引数です。コンストラクタの中で this.name = name; と書くことで、渡されてきた値をフィールドに保存しています。

確認問題

  1. class Student の中に String name; と書いた場合、name は何のための変数ですか。
  2. Student s1 = new Student("山田", 80);Student s2 = new Student("佐藤", 90); では、s1.scores2.score は同じ値の置き場所ですか。
  3. this.name = name; の左側と右側の name は、それぞれ何を表していますか。

演習後の確認:こちらのページを使って、自分で考えた内容を見直せます。

あわせて読みたい関連記事

まとめ

フィールドは、オブジェクトが持つ値を保存するための変数です。クラスにフィールドを書くことで、new されたオブジェクトごとに namescore の値を持てるようになります。まずは「フィールド名は同じでも、値はオブジェクトごとに分かれる」と考えると整理しやすくなります。

シェアする