ホームページ >Java >&#&チュートリアル >Java の基礎入門エッセイ (8) JavaSE バージョン - static static
オブジェクト指向(2)
this: オブジェクトを表します。それはどのオブジェクトを表していますか?現在のオブジェクト。
メンバー変数とローカル変数が同じ名前の場合、キーワード this を使用して区別できます。
これは、関数が属するオブジェクトへの参照です。 (簡単に言えば、どのオブジェクトが this が配置されている関数を呼び出すか、this はそのオブジェクトを表します。)
this は、コンストラクター内の他のコンストラクターを呼び出すために使用することもできます。注: コンストラクターの最初の行でのみ定義できます。初期化アクションを最初に実行する必要があるためです。
人name) このクラスのオブジェクトは通常これを使用します。
static:
特徴: 1.staticはメンバーを変更するために使用される修飾子です。
2. static によって変更されたメンバーは、すべてのオブジェクトによって共有されます。
3. クラスがロードされるときに静的メンバーがすでに存在するため、静的メンバーはオブジェクトの前に存在します。修 4. 静的に変更されたメンバーは、クラス名などのクラス名によって直接呼び出すことができます。
5. static によって変更されたデータは共有データであり、オブジェクトに格納される時間固有のデータは共有データです。
注: メンバー変数はインスタンス変数とも呼ばれ、静的に変更された変数は静的変数またはクラス変数と呼ばれます。
メンバー変数と静的変数の違い:
1. 2 つの変数のライフサイクルは異なります。
メンバー変数はオブジェクトの作成とともに存在し、オブジェクトがリサイクルされるとリサイクルおよび解放されます。
静的変数はクラスのロードとともに存在し、クラスの消滅とともに消滅します。
2.呼び出し方法が異なります。
メンバー変数はオブジェクトによってのみ呼び出すことができます。
静的変数はオブジェクトとクラス名によって呼び出すことができます (推奨)。
3. 別名が異なります。
メンバー変数はインスタンス変数と呼ばれ、
静的変数はクラス変数と呼ばれます。
4. データの保存場所が異なります。
メンバー変数データはヒープメモリ上のオブジェクトに格納されるため、オブジェクト固有データとも呼ばれます。
静的変数のデータはメソッド領域の静的領域(共有データ領域)に格納されるため、オブジェクトの共有データとも呼ばれます。
静的使用に関する注意事項:
1. 静的メソッドは静的メンバーのみにアクセスできます。 (非静的は静的と非静的の両方にアクセスできます) (注: 同じクラスの環境では、静的メソッドはこのクラスの静的メンバーのみを呼び出すことができることに注意してください)
2. 静的メソッド this または では使用できません。スーパーキーワード。
3. main 関数は静的です。
静的をいつ使用するか?
1. 静的変数。
分析オブジェクト内のすべてのメンバー変数が同じである場合、このメンバー変数は静的に変更できます。
データがオブジェクト内で異なる限り、それはオブジェクトの一意のデータであり、オブジェクトに保存する必要があり、非静的です。
同じデータの場合、オブジェクトを変更する必要はなく、オブジェクトに保存する必要はなく、静的に定義されます。
2. 静的機能。
関数が静的に変更されるかどうかに関係なく、唯一の参照点は、関数がオブジェクト内の固有のデータにアクセスできるかどうかです。
簡単に言うと、ソースコードから、関数が非静的メンバー変数にアクセスする必要があるかどうか、そうであればその関数は非静的である、そうでない場合はその関数は静的として定義できます。
もちろん、この関数は非静的として定義することもできますが、非静的はオブジェクトによって呼び出される必要があり、オブジェクトを作成するときに、固有のデータにアクセスせずに非静的メソッドを呼び出すためのオブジェクトを作成するだけでは意味がありません。
main 関数の特徴:
1. 形式は固定です。2. jvm によって認識され、呼び出されます。
public: 権限が最大である必要があるためです。
static: オブジェクトが必要ない場合は、メイン関数のクラス名を使用して直接呼び出してください。
void: main 関数には特定の戻り値がありません。
main: 関数名。キーワードではなく、jvm によって認識される単なる固定名です。
String[] args: main関数のパラメータリストです。配列型パラメータであり、要素はすべて文字列型です。 (main 関数を呼び出すときに渡すことができます。例: java mainDemo xx yy zz は、渡される 3 つの要素を持つ文字列配列です)
静的コード ブロック構築コード ブロック ローカル コード ブロック:
静的コード ブロック: With Executedクラスがロードされるとき。そして実行されるのは 1 回だけです。機能: クラスを初期化するために使用されます。
構築コードブロック: オブジェクトの作成時に実行され、オブジェクトの作成時に数回呼び出されます。機能: すべてのオブジェクトに対して初期化できます。 (コンストラクターとの違い: コンストラクターは、対応するオブジェクトの対象を絞った初期化を実行します。コンストラクター コード ブロックのオブジェクトの初期化は普遍的です。)
ローカル コード ブロックの役割: ローカル変数のライフ サイクルを制限します。
3 つの呼び出しシーケンスは次のとおりです:
class StaticCode { static int num ; //静态代码块 (首先执行) static { num = 10; // num *=3; System.out.println("hahahah"); } StaticCode(){} static void show() { System.out.println(num); } } class Person { private String name; {//构造代码块。可以给所有对象进行初始化的。(如有调用对象,即其次调用,与局部代码块视情况而定) System.out.println("constructor code "); // cry(); } static { System.out.println("static code"); } Person()//是给对应的对象进行针对性的初始化。 { name = "baby"; // cry(); } Person(String name) { this.name = name; // cry(); } public void cry() { System.out.println("哇哇"); } public void speak() { System.out.println("name:"+name); } static void show() { System.out.println("show run"); } } class StaticCodeDemo { static { // System.out.println("a"); //先执行 } public static void main(String[] args) { // Person p = null; // p.speak(); // Person.show(); // Person p1 = new Person(); // p1.speak(); // Person p2 = new Person("旺财"); // p2.speak(); // new Person(); // new StaticCode().show(); // new StaticCode().show(); // StaticCode.show(); // System.out.println("b"); //后执行 } }
上記は Java エッセイの基本入門 (8) JavaSE バージョン - 静的コンテンツの詳細については、PHP 中国語 Web サイト (www.php) に注目してください。 .cn)!