java の静的メソッドと非静的メソッドの違い
1. 静的メソッド (静的メソッド)
静的メンバー変数と同様、これらはクラス自体に属します。クラスがロードされるときにメモリにロードされ、自動的に破棄されません。JVM が実行されるまでメモリ内に残ります。閉じられています;2. 非静的メソッド
インスタンス化メソッドとも呼ばれ、インスタンス オブジェクトに属します。メモリはインスタンス化後に割り当てられ、参照する必要があります。インスタンス オブジェクトが JVM によってリサイクルされると、インスタンス オブジェクトも消えます静的メソッドとインスタンス メソッドの違い
1ライフ サイクル
静的メソッドのライフ サイクルは、プロセスの作成時に開始され、プロセスの終了時に終了します。したがって、静的メソッドはグローバルであり、プロセス全体を通じて実行されます。インスタンス メソッドのライフ サイクルは、オブジェクトのインスタンス化から始まり、プロセスの終了まで続きます。インスタンス化されたオブジェクトは、登録解除およびリサイクルされた後に終了します。したがって、インスタンス メソッドのライフ サイクルは短くなります。これは、インスタンス メソッドで静的メソッドを呼び出すことができない理由でもあります。2 .メソッドの呼び出し
静的メソッドを呼び出す場合外部的には、「クラス名.メソッド名」メソッドまたは「オブジェクト.メソッド名」メソッドを使用できます。つまり、静的メソッドを呼び出すときです。オブジェクトを作成する必要はありません。インスタンス メソッドで実行できるのは、 「object.method name メソッド」を使用します。//-----------hasStaticMethod.java----------------- public class hasStaticMethod{ //定义一个静态方法 public static void callMe(){ System.out.println("This is a static method."); } }
//-----------invokeStaticMethod.java----------------- public class invokeStaticMethod{ public static void main(String args[]){ hasStaticMethod.callMe(); //不创建对象,直接调用静态方法 hasStaticMethod oa = new hasStaticMethod(); //创建一个对象 oa.callMe(); //利用对象来调用静态方法 } }
//-----------accessMember.java----------------- class accessMember{ private static int sa; //定义一个静态成员变量 private int ia; //定义一个实例成员变量 //下面定义一个静态方法 static void statMethod(){ int i = 0; //正确,可以有自己的局部变量sa = 10; //正确,静态方法可以使用静态变量 otherStat(); //正确,可以调用静态方法 ia = 20; //错误,不能使用实例变量 insMethod(); //错误,不能调用实例方法 } static void otherStat(){} //下面定义一个实例方法 void insMethod(){ int i = 0; //正确,可以有自己的局部变量 sa = 15; //正确,可以使用静态变量 ia = 30; //正确,可以使用实例变量 statMethod(); //正确,可以调用静态方法 } }
以上がJavaの静的メソッドと非静的メソッドの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。