Javaのフィールド変数とインスタンス変数の違いとは?初心者にもわかりやすく解説!

こんにちは。ゆうせいです。

今回は、Java(ジャバ)プログラミングを学び始めた方が必ず一度は迷うテーマ、「フィールド変数」と「インスタンス変数」の違いについて、丁寧に解説していきます。

「名前が違うだけ?」「どう使い分ければいいの?」と疑問に思うこと、ありますよね。

でも安心してください!この記事を読み終わる頃には、自信を持って説明できるようになりますよ。


フィールド変数とインスタンス変数は同じ?それとも違う?

まず、結論からお伝えします。

フィールド変数とインスタンス変数は、文脈によっては「同じもの」を指すこともあります

しかし、厳密には少し意味が異なるので、それぞれの言葉の意味をはっきり区別して理解しておくことが大切です!


フィールド変数とは何か?

フィールドとは「クラスに属する変数」のこと

Javaでは、クラスの中で宣言された変数のことをフィールド(field)と呼びます。

以下のように、メソッドの外、クラスの中で宣言されている変数がフィールドです。

public class Car {
    String color; // これがフィールド
    int speed;    // これもフィールド
}

このように、クラスの内部で定義されたが、メソッドの内部ではない変数がフィールドです。

フィールドには、さらに2つの種類があります。

種類特徴説明
インスタンス変数オブジェクトごとに値を持つnew で作られたインスタンスごとに異なる値をもつ
クラス変数(static変数)クラス全体で共有されるすべてのインスタンスで共通の値を持つ

つまり、フィールドというのは「インスタンス変数」と「クラス変数」の総称です。


インスタンス変数とは何か?

インスタンスごとに異なる情報を持つ変数

インスタンス変数(instance variable)は、インスタンス、つまりオブジェクトが生成されるたびに別々の値を持てる変数のことです。

たとえば、以下のようなコードを見てください。

public class Dog {
    String name; // ← これがインスタンス変数

    public Dog(String name) {
        this.name = name;
    }
}

このクラスから2匹の犬を作ると、それぞれの名前が個別に保存されます。

Dog dog1 = new Dog("ポチ");
Dog dog2 = new Dog("タロ");

System.out.println(dog1.name); // ポチ
System.out.println(dog2.name); // タロ

このように、インスタンス変数は「そのオブジェクトだけが持っている情報」を保持するのです。


フィールド変数とインスタンス変数の違いをまとめると?

比較項目フィールド変数インスタンス変数
定義の範囲クラス内すべての変数フィールドのうち、staticを付けない変数
staticとの関係static付き・なし両方を含むstaticを付けないものだけ
オブジェクトとの関係共通とは限らないオブジェクトごとに個別

つまり、「フィールド変数」は大きなカテゴリ名で、「インスタンス変数」はその中の1つ、という関係です。

たとえば、「果物」という言葉の中に「りんご」が含まれているようなものです。


クラス変数(static変数)との違いも押さえておこう

staticを使うとクラス全体で共有される

public class Counter {
    static int count = 0; // これはクラス変数
}

このようにstaticを付けると、その変数はすべてのインスタンスで共有されます。

例えるなら、インスタンス変数が「一人ひとりの成績」なら、クラス変数は「全体の平均点」みたいなものです。


よくある間違い

  • 「インスタンス変数とフィールド変数は別物」と思ってしまう
    → 実は、インスタンス変数はフィールドの一種です。
  • staticを付けた変数もインスタンス変数と思ってしまう
    → staticを付けた変数はクラス変数です。

今後の学習の指針

Javaでは、「変数のスコープ(どこで使えるか)」や「ライフサイクル(どのタイミングで生きているか)」を理解することが非常に重要です。

次のステップとしては、以下の学習を進めてみてください。

  • ローカル変数との違い(メソッド内で宣言される変数)
  • staticメソッドとインスタンスメソッドの使い分け
  • クラス設計の基本(カプセル化、継承、ポリモーフィズム)

もし「そもそもインスタンスって何?」という疑問があれば、そこから丁寧に掘り下げていきましょう!

知識は階段のように積み上がるものです。一歩一歩進めば、必ず理解できますよ。応援しています!

セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク

投稿者プロフィール

山崎講師
山崎講師代表取締役
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。