ホームページ >バックエンド開発 >PHPチュートリアル >PHPのstaticキーワードの特徴と使い方を詳しく解説

PHPのstaticキーワードの特徴と使い方を詳しく解説

黄舟
黄舟オリジナル
2017-07-02 11:51:442417ブラウズ

→static: static

使用法: メンバー(メンバー変数、メンバー関数)を変更するために使用される修飾子です

class Person
{
    String country = "cn";
}

/*人物オブジェクトがインスタンス化されるたびに、各オブジェクトはヒープメモリに国を持ちます

静的を追加した後は、他のオブジェクトから直接呼び出すことができる静的国がメモリ内に 1 つだけ存在するため、メモリ領域を節約できます。

メンバーを静的に変更する場合、オブジェクトから呼び出すだけでなく、クラス名から直接呼び出すこともできます。 */

特別なコンテンツはオブジェクトとともに保存されます

たとえば、person クラスでは、すべての中国人は自分の名前を持ち、国籍は同じ中国人であるため、contry は名前のない静的なものとして定義できます。

→静的機能

1. クラスのロード時にロード

つまり、静的はクラスの消滅とともに消え、そのライフサイクルが最も長いことを示します

2.オブジェクトの存在

3. すべてのオブジェクトで共有

4. クラス名で直接呼び出すことができる

→int age (メンバ変数) インスタンス変数と static int age (静的メンバ変数) クラス変数の違い

1. として保存

インスタンス変数はオブジェクトの作成時にヒープメモリに保存されます

クラス変数はクラスがロードされるとメソッド領域に存在します

2. インスタンス変数はオブジェクトが消えると消えます

クラス変数はライフサイクルが最も長く、クラスが消滅すると消滅します

→静的使用注意事項

1. 静的メソッドは静的メンバーにのみアクセスできます

2. 静的メソッドでは this キーワードと super キーワードを定義できません

static はオブジェクトの存在に先行するため、static メソッドには現れません

3. メイン関数は static です

→ static のメリットとデメリット

メリット: オブジェクトのデータを別のスペースに保存し、スペースを節約します。各オブジェクトにコピーを保存する必要があります。クラス名 (person.country) によって直接呼び出すことができます。 欠点: ライフサイクルが長すぎます。

アクセスは制限されています。 (静的のみアクセス可能)

→静的をいつ使用するか?

2つの側面から始める必要があります

静的変更の内容にはメンバ変数と

メンバメソッド

(関数)が含まれるため

静的変数(クラス変数)はいつ定義すればよいのでしょうか? 共有データがオブジェクト内に存在する場合、データは静的に変更されます。

オブジェクト内の固有のデータは、非静的であり、ヒープ メモリ内に存在するように定義されている必要があります。

静的関数をいつ定義するか?

関数内で非静的データ (オブジェクトの特定のデータ) にアクセスできない場合、関数は静的として定義できます。

→静的アプリケーション

どのアプリケーションにも共通の関数があります

これらの関数は、再利用するために個別に抽出してパッケージ化することができます

すべてのメンバー メソッドを静的として定義し、クラス名を使用して直接呼び出します。

クラスにはデフォルトの

コンストラクター

が存在します。このコンストラクターの権限は、それが属するクラスと一致します。

静的コードブロック形式:

静的

{

静的での実行ステートメント。コード ブロック;

}

//特徴: クラスがロードされるときに実行され、1 回だけ実行されます。クラスを初期化するために使用されます。

以下の例:

class StaticCode
{
    static 
    {
        System,out.println("a");
    }
}

ローディングシーケンス静的コードブロック-->構築コードブロック-->コンストラクター関数

オブジェクトの初期化処理

パーソン p = new Person("zhangsan",20);

1 、 new は Person.class を使用するためです。したがって、最初に Person.class ファイルが検索され、メモリにロードされます。

2. クラス内の静的コード ブロック (静的コード ブロック) を実行し、存在する場合は Person.class クラスを初期化します

3. ヒープ メモリに領域を作成し、未割り当てメモリ アドレスを作成します

4.ヒープメモリ内にオブジェクトの一意の

属性

を作成し、デフォルトの初期化を実行します

5. 属性を明示的に初期化します6. 構築コードブロックを使用してオブジェクトを初期化します

7. 対応するコンストラクターを使用してオブジェクトを初期化します

8、スタックメモリ内のp変数にメモリアドレスを代入します

以上がPHPのstaticキーワードの特徴と使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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