static キーワードは、クラスのインスタンスが生成されるかどうかに関係なく存在するメソッドを構築するために使用されます。 static キーワードを使用するメソッドはすべて、静的メソッドと呼ばれます。
静的メソッドの特徴:
Javaラムダ式
- Java の静的メソッドは、クラスのインスタンスではなく、クラスの一部であるメソッドです。
- クラスのすべてのインスタンスはメソッドにアクセスできます。
- 静的メソッドは、クラスのオブジェクト (インスタンス) を使用せずにクラス変数 (静的変数) にアクセスできます。
- 静的メソッドでアクセスできるのは静的データのみです。静的ではないデータ (インスタンス変数) にはアクセスできません。
- 静的メソッドと非静的メソッドの両方で、静的メソッドに直接アクセスできます。
静的メソッドを宣言する構文:
Access_modifier static void methodName() { // Method body. }> クラスの名前を使用して、静的メソッドを呼び出したり、静的メソッドにアクセスしたりできます。
静的メソッドを呼び出すための構文:
className.methodName();>
例 1: 静的メソッドにはインスタンス変数へのアクセス権がありません
JVM は最初に静的メソッドを実行し、次にクラス インスタンスを作成します。静的メソッドが使用されている場合、オブジェクトにアクセスできないためです。静的メソッドはインスタンス変数にアクセスできません。その結果、静的メソッドはクラスのインスタンス変数にアクセスできなくなります。
ジャワ
// Java program to demonstrate that> // The static method does not have> // access to the instance variable> > import> java.io.*;> > public> class> GFG {> >// static variable> >static> int> a =>40>;> > >// instance variable> >int> b =>50>;> > >void> simpleDisplay()> >{> >System.out.println(a);> >System.out.println(b);> >}> > >// Declaration of a static method.> >static> void> staticDisplay()> >{> >System.out.println(a);> >}> > >// main method> >public> static> void> main(String[] args)> >{> >GFG obj =>new> GFG();> >obj.simpleDisplay();> > >// Calling static method.> >staticDisplay();> >}> }> |
>
>出力
40 50 40>
例 2: 静的メソッドと非静的メソッドの両方で、静的メソッドに直接アクセスします。
ジャワ
// Java program to demonstrate that> // In both static and non-static methods,> // static methods are directly accessed.> > import> java.io.*;> > public> class> StaticExample {> > >static> int> num =>100>;> >static> String str =>'GeeksForGeeks'>;> > >// This is Static method> >static> void> display()> >{> >System.out.println(>'static number is '> + num);> >System.out.println(>'static string is '> + str);> >}> > >// non-static method> >void> nonstatic()> >{> >// our static method can accessed> >// in non static method> >display();> >}> > >// main method> >public> static> void> main(String args[])> >{> >StaticExample obj =>new> StaticExample();> > >// This is object to call non static function> >obj.nonstatic();> > >// static method can called> >// directly without an object> >display();> >}> }> |
>
>
文字列.値出力
static number is 100 static string is GeeksForGeeks static number is 100 static string is GeeksForGeeks>
静的メソッドを使用する理由
- 静的変数およびその他の非オブジェクトベースの静的メソッドにアクセスして変更するため。
- ユーティリティ クラスとアシスト クラスでは、静的メソッドが頻繁に使用されます。
静的メソッドの制限:
- 非静的データ メンバーまたは非静的メソッドを静的メソッドで使用することはできません。また、静的メソッドは非静的メソッドを直接呼び出すこともできません。
- 静的環境では、this と super は使用できません。
なぜ Javaのメインメソッドです 静的?
これは、オブジェクトでは静的メソッドを呼び出す必要がないためです。それが非静的関数の場合、JVM は main() メソッドを呼び出す前にまずオブジェクトを構築するため、余分なメモリ割り当てが困難になります。
静的メソッドとインスタンスメソッドの違い
| インスタンスメソッド | 静的メソッド |
|---|---|
| クラスのオブジェクトが必要です。 | クラスのオブジェクトは必要ありません。 |
| クラスのすべての属性にアクセスできます。 | クラスの静的属性にのみアクセスできます。 |
| これらのメソッドには、オブジェクト参照を使用してのみアクセスできます。 | このメソッドにはクラス名によってのみアクセスできます。 |
| 構文: Objref.メソッド名() | 構文: クラス名.メソッド名() |
| これは値渡しプログラミングの例です。 | これは、参照渡しプログラミングの例です。 |