1。Javaの静的変数
1。静的によって変更されたJavaのメンバーは、静的メンバーまたはクラスメンバーと呼ばれます。それはオブジェクトではなくクラス全体に属します。つまり、クラスのすべてのオブジェクトによって共有され、オブジェクトよりも優先されます。静的メンバーは、クラス名またはオブジェクト名を使用して直接アクセスできます。静的を使用して、変数、メソッド、およびコードブロックを変更します。
2。パブリック修飾子はパブリックおよびパブリックを表し、静的変数は静的変数で変更されます。
3.静的方法では、同じクラスの静的メンバーを直接呼び出すことができますが、非静的メンバーは直接呼び出くことはできません。
パブリッククラスHellworld {string name = "java"; //非静的変数Static String Hobby = "Programming"; // static変数public static void print(){system.out.println( "welcome:" + name + "!"); //非静的変数system.out.println( "welcome:" + hobby + "!"); //静的変数を直接呼び出すことができます}}4.静的メソッドで非静的変数を呼び出す場合は、クラスのオブジェクトを作成してから、オブジェクトを介して非静的変数にアクセスできます。
public class helloworld {string name = "java"; // non-static variable static string hobby = "program"; // static variable //非静的変数public static void print(){//クラスのオブジェクトの作成Helloworld hellow = new Helloworld(); //オブジェクトを使用して、staticメソッドの非静的変数system.out.printlnを呼び出します( "wamelt:"+hello.name+"!"); // staticメソッドでは、静的変数System.out.printn( "welcome to like"+program+""+hello.name)を直接呼び出すことができます。 }}5.通常のメンバー方法では、同じタイプの非静的変数と静的変数に直接アクセスできます。
パブリッククラスHellworld {string name = "java"; //非静的変数Static String Hobby = "Programing"; // static変数public void print(){//通常の方法system.out.println( "welcome:" + name + "!"); System.out.prinltn( "welcome to like"+program+"+hello.name);}}6。静的方法では、非静的な方法を直接呼び出すことはできません。非静的な方法には、オブジェクトを介してアクセスする必要があります。
public class hellworld {string name = "java"; // non-static variable static string hobby = "program"; // static variable // public void show(){system.out.println( "私は非静的な方法であり、静的方法で直接呼び出さない...."); } // staticメソッドpublic static void show2(){system.out.println( "私は静的方法であり、静的メソッドで直接呼び出すことができます"); } //非静的メソッドは、静的メソッドのオブジェクトを介して呼び出されます。静的メソッドを直接呼び出すことができますpublic static void print(){//クラスのオブジェクトを作成しますhelloworld hello = new helloworld(); // staticメソッドで非静的な方法hello.show()を計算します。 //静的メソッドを計算するshow2(); }}2。Javaで使用される静的初期化ブロック
1。クラス宣言では、複数の初期化ブロックを含めることができます。クラスのインスタンスが作成されると、これらのコードブロックが順番に実行されます。 Staticを使用して初期化ブロックを変更すると、静的初期化ブロックと呼ばれます。
2。インスタンス変数とクラス変数の違い:
a)ストレージの場所:クラスの変数は、クラスがロードされるとメソッド領域に保存されます。オブジェクトが確立されると、インスタンス変数がヒープメモリに存在します。
b)ライフサイクル:クラス変数のライフサイクルは最長であり、クラスが消えると消えます。インスタンス変数のライフサイクルは、オブジェクトが消えると消えます。
3.静的初期化ブロックは、クラスがロードされたときにのみ実行され、1回のみ実行されます。同時に、静的初期化ブロックは静的変数に値を割り当てることのみであり、通常のメンバー変数を初期化することはできません。プログラムが実行されているとき、静的初期化高速が実行され、メイン関数よりも優先され、通常の初期化ブロックが実行され、最後に構造方法が実行されます。
public class staticdemo {int num1; //宣言変数1 int num2; // declare変数2 static int num3; // declare static変数3 public staticdemo(){// constructor method num1 = 88; system.out.println( "構築方法から変数1に値を割り当てる"); } {//初期化ブロックnum2 = 99; System.out.println( "初期化ブロックから変数2に値を割り当てる"); } static {//静的初期化ここでは、通常の変数を割り当てることはできませんnum3 = 77; system.out.println( "静的変数3に値をstatic初期化ブロックに割り当てる"); } public static void main(string [] args){staticdemo hello = new staticDemo(); //クラスのオブジェクトを作成してくださいhello system.out.println( "num1:" + hello.num1); System.out.println( "num2:" + hello.num2); System.out.println( "num3:" + hello.num3); staticdemo hello1 = new staticDemo(); }}実行結果: