ホームページ  >  記事  >  Java  >  Javaの静的メソッドと非静的メソッドの違いは何ですか

Javaの静的メソッドと非静的メソッドの違いは何ですか

青灯夜游
青灯夜游オリジナル
2021-05-07 14:23:2429002ブラウズ

違い: 1. 静的メソッドは、static キーワードで変更されたメソッドで、オブジェクトではなくクラスに属します。非静的メソッドは、static キーワードで変更されていない通常のメソッドで、オブジェクトには属しますが、クラスには属しません。 2. 静的メソッドは直接呼び出すことができ、クラス名呼び出しとオブジェクト呼び出しが可能ですが、非静的メソッドはオブジェクトを通じてのみ呼び出すことができます。 3. 異なるライフサイクル。

Javaの静的メソッドと非静的メソッドの違いは何ですか

#このチュートリアルの動作環境: Windows7 システム、Java8 バージョン、DELL G3 コンピューター。

1. 静的メソッドと非静的メソッドの違い (呼び出し元のオブジェクトと参照変数が異なります)

静的メソッド: 静的メソッドを修飾したメソッドです。キーワード。クラス メソッドとも呼ばれます。これは、オブジェクトではなくクラスに属します。オブジェクトをインスタンス化する前に、クラス名とメソッド名を使用して静的メソッドを呼び出すことができます。 (静的属性と静的メソッドはクラスに属しており、クラス名を通じて直接呼び出すことができます)。

A. 静的メソッドでは、静的メソッドを呼び出すことができます。

B. 静的メソッドでは、非静的メソッドを呼び出すことはできません。

C. 静的メソッドでは、クラス変数 (つまり、静的によって変更された変数) を参照できます。

D. 静的メソッドでは、メンバー変数 (つまり、静的変更が行われていない変数) を参照することはできません。

E. 静的メソッドでは、super キーワードと this キーワードは使用できません

非静的メソッド: 静的キーワードの変更を含まない通常のメソッドであり、インスタンス メソッドとも呼ばれます。そしてメンバーメソッド。クラスではなくオブジェクトに属します。 (メンバー属性とメンバー メソッドはオブジェクトに属しており、オブジェクトは new キーワードを使用して作成し、オブジェクトを介して呼び出す必要があります)。

A. 通常のメソッドでは、通常のメソッドを呼び出すことができます。

B. 通常のメソッドでは、静的メソッドを呼び出すことができます

C. 通常のメソッドでは、クラス変数とメンバー変数を参照できます

D. 通常のメソッドでは、 super キーワードと this キーワードを使用できます

2. 静的メソッドと非静的メソッドの違い (呼び出しメソッドの違い)

静的メソッドは直接呼び出すことができます。クラス名の呼び出しとオブジェクトの呼び出し。 (クラス名.メソッド名 / オブジェクト名.メソッド名)

ただし、非静的メソッドはオブジェクトを通じてのみ呼び出すことができます。 (オブジェクト名.メソッド名)

3. 静的メソッドと非静的メソッドの違い (ライフサイクルの違い)

静的メソッドのライフサイクルは次のとおりです。対応するクラス Long と同様に、クラスの定義時に静的メソッドと静的変数が割り当てられ、メモリにロードされます。静的プロパティと静的メソッドは、スレッドが終了するまで破棄されません。 (つまり、静的メソッドはクラスに属します)

非静的メソッドのライフサイクルは、クラスのインスタンス化されたオブジェクトと同じ長さです。クラスがオブジェクトをインスタンス化する場合にのみ、非静的メソッドは作成され、このオブジェクトが破棄されると、非静的メソッドもすぐに破棄されます。 (つまり、非静的メソッドはオブジェクトに属します)

概要: クラス メソッドはクラス名を通じて直接呼び出すことができます。インスタンス メソッドは、最初にクラスをインスタンス化し、次にオブジェクトを初期化し、次にそれを呼び出す必要があります。クラスのインスタンス オブジェクト

例:

class XYZ{
public static void main(String[] str){
     XYZ.testStatic();         //直接通过类调用

     XYZ a = new XYZ();        //实例化,然后构造方法会初始化
     a.testMethod();           //对象调用方法
}

public static void testStatic(){
System.out.println("This is static method");
}

public void testMethod(){
System.out.println("This is instance method");
}
}

Static 静的変数/メソッドはクラスのロード プロセス中に初期化され、メモリ内にコピーが 1 つだけ存在するため、グローバル変数/メソッド。

推奨される関連ビデオ チュートリアル:

Java ビデオ チュートリアル

以上がJavaの静的メソッドと非静的メソッドの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。