static変数とインスタンス変数の違い
static変数とは、static修飾子がついた変数のことです。
また、static修飾子がついていない変数のことをインスタンス変数といいます。
- インスタンス変数は、「クラスのオブジェクト(インスタンス)を生成したタイミングで作られる変数」です。
そして、「クラスのオブジェクト(インスタンス)毎に管理されています」。(オブジェクト毎に変数が作られる)
Sample.java
Sample m = new Sample();
m.instanNum = 1;
- static変数は、「クラスのオブジェクト生成(インスタンス生成)に関係なく作られる変数」です。(static変数に最初にアクセスしたタイミングで作られる)
そのため、「クラスのオブジェクト(インスタンス)に関係なく共通で管理しています」。(共通で1つの変数が作られる)
static変数は、静的な変数であり、オブジェクト毎に管理しているインスタンス変数とは違い、static変数の実体は1つです。
Sample.java
Sample.staticNum = 1;
staticメソッドとインスタンスメソッドの違い
staticメソッドとは、static修飾子がついたメソッドのことです。
また、static修飾子がついていないメソッドのことをインスタンスメソッドといいます。
staticメソッドの主な使い方は、インスタンスの状態に依存しない処理をさせることです。これはユーティリティメソッドとも呼ばれ、決まりきった処理などに用いられます。
インスタンスメソッドは、クラスのオブジェクト(インスタンス)を生成したタイミングで使えるようになるメソッドです。それに対しstaticメソッドは、クラスのオブジェクト(インスタンス)を生成しなくても使うことができます。