「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Java の「static」の魔法: 1 つは全員のために、そして全員は 1 のために!

Java の「static」の魔法: 1 つは全員のために、そして全員は 1 のために!

2024 年 11 月 6 日に公開
ブラウズ:184

The Magic of `static` in Java: One for All, and All for One!

正直に言うと、静的キーワードに初めて出会ったとき、誰もがこう思います: 「これは何の魔術ですか?」 ?でも心配しないでください。ここでは、シンプルで奥深く、そしておそらく少し楽しい方法でそれを詳しく説明します!

あなたがパーティーにいるところを想像してみてください?あなたもあなたの友達もみんな帽子をかぶっています。しかし、全員が共有しなければならない帽子は 1 つだけ しかありません。これは基本的に Java で static キーワードが行うことです。友達ごとに帽子を作成する (面倒になる可能性があります) 代わりに、グループ (クラス) に属する 1 つの帽子 を用意し、全員が順番にそれをかぶることができます。

このイメージを念頭に置いたところで、Java で静的が実際に何を行うのかを詳しく見ていきましょう。


静的とはどういう意味ですか?

簡単に言えば、Java で static キーワードを使用すると、「ここにあるこれは、そのクラスの特定のオブジェクトではなく、クラス自体に属しています。」と言っていることになります。

これはつまり:

  1. オブジェクトは不要: 静的変数やメソッドを使用するためにオブジェクトを作成する必要はありません。直接電話してください!
  2. すべてのオブジェクトで共有: オブジェクトを作成すると、すべてのオブジェクトが同じ静的なものを共有します。 1 つの変更は全員に影響を与えます。まるで世界的なパーティーハット?!

静的変数: パーティー ハット ?

静的変数は、誰もが共有する 1 つの帽子のようなものです。帽子を変えると (例: 羽根を入れるなど)、全員がその変化を目にします。

例:

class Party {
    static int numberOfGuests = 0; // static variable

    Party() {
        numberOfGuests  ;  // Increment the guest count every time someone joins the party
    }
}

public class Main {
    public static void main(String[] args) {
        Party guest1 = new Party();
        Party guest2 = new Party();
        Party guest3 = new Party();

        System.out.println(Party.numberOfGuests);  // Output: 3 ?
    }
}

この例では、すべてのゲストがnumberOfGuests変数を共有します。新しいゲストはそれぞれ、独自のゲスト数を取得しません (混乱を想像してください!)。代わりに、全員が同じカウントを更新します。さて、何人のゲストが到着しても、ゲストの数は 1 つ のみで、個々のゲストではなく Party クラス に属します。


静的メソッド: ピザ配達員 ?

静的メソッドは、パーティーのピザの配達員のようなものです。電話をかけると、招待状 (オブジェクト) を必要とせずに現れます。パーティーの数に関係なく、同じピザ屋が全員にピザを配達します。ピザ屋(クラス)に電話するだけで、彼らはやって来ます!

例:

class PizzaShop {
    static void deliverPizza() {
        System.out.println("Pizza delivered! ?");
    }
}

public class Main {
    public static void main(String[] args) {
        PizzaShop.deliverPizza();  // No need to create a PizzaShop object
    }
}

上記の例では、ピザを入手するために PizzaShop オブジェクトを作成する必要はありません。クラスからメソッドを直接呼び出しました。だって、お腹が空くたびにお店を作りたいと思うのはなぜですか?


静的ブロック: DJ のサウンド チェック ?

パーティーが始まる前にDJがサウンドチェックをしますよね?これは 静的ブロック のようなものです。すべてが適切に配置されていることを確認するために、何かが起こる前に 1 回実行されます。

例:

class Party {
    static String music;

    // Static block to set up the DJ's playlist ?
    static {
        music = "Let's Dance by David Bowie";
        System.out.println("Music is set up: "   music);
    }
}

public class Main {
    public static void main(String[] args) {
        System.out.println("Party is starting with: "   Party.music);
    }
}

静的ブロックはパーティが開始するに実行されます。音楽は事前に設定されているため、ゲストが到着したときにはすでにノリノリです?.


静的入れ子クラス: VIP エリア ?

静的ネストされたクラスは、パーティーの VIP セクションのようなものです。彼らはメイン イベント内にいますが、独立しています。VIP セクションにアクセスするためにパーティーを作成する必要はありません。

例:

class Party {
    static class VIPArea {
        void exclusiveService() {
            System.out.println("Welcome to the VIP area! ?");
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Party.VIPArea vip = new Party.VIPArea();  // No need for a Party object
        vip.exclusiveService();  // Output: Welcome to the VIP area! ?
    }
}

VIPエリアはパーティーの一部ですが、本格的なパーティーでなくてもご利用いただけます。それは独立したもので、荒れ狂うイベントの中にあるクールで静かな VIP ラウンジのようなものです。


静的を使用する理由

さて、あなたはこう考えているかもしれません。「これはとても素晴らしいことですが、実際に静的をいつ使用すればよいでしょうか?」 さて、これがチートシートです:

  1. 定数の場合: 決して変化しないもの (Pi など)。定数には static Final を使用します。例: staticfinal double PI = 3.14159;
  2. ユーティリティ メソッドの場合: オブジェクトの状態に依存しない関数。 Math.pow().
  3. を考えてみましょう。
  4. 共有データの場合: 何かが作成された回数を数えるなど、クラスのすべてのインスタンスが値を共有する必要がある場合。
  5. 効率のために: オブジェクトが必要ないときは、オブジェクトを作成しないようにします。代わりに静的メソッドまたは変数を使用してください!

舞台裏: 静電気はどのように機能するのか? ?️

さて、カーテンの後ろを覗いてみましょう。魔法がどのように起こるかは次のとおりです:

  1. メモリ管理: 静的変数とメソッドは、メモリの メソッド領域 に存在します (オブジェクトが存在するヒープ内ではありません)。つまり、クラスが最初にロードされるときに 1 回ロードされ、プログラムが終了するまでそこに留まります。
  2. 初期化: 静的変数とブロックは、クラスがメモリにロードされるときに初期化されます(オブジェクトの作成時ではありません)。したがって、オブジェクトが作成される前に使用する準備ができています。
  3. アクセス: 静的変数やメソッドは特定のオブジェクトではなくクラスに属しているため、それらにアクセスするためにオブジェクトは必要ありません。

ゲストが到着する前にスナックテーブルを準備するようなものです。各ゲストに自分の食べ物を持ってくるように頼む必要はありません。共有の軽食を自分で食べるだけです?.


注意: やりすぎないでください。 ?

ほとんどのことと同様、静電気が多すぎると問題が発生する可能性があります。以下にいくつかの警告があります:

  • オブジェクトなし、非静的要素へのアクセスなし: 静的メソッドは、オブジェクトではなくクラスに属しているため、非静的 (インスタンス) 変数またはメソッドにアクセスできません。言い換えれば、ピザ屋はプレイリストの選択を手伝うことはできません。彼はピザだけを扱っています ?.
  • スレッド セーフティ: 複数のスレッドが同じ静的変数を変更すると、状況が混乱する可能性があります (同期を処理しない限り)。 2 人のゲストが同じ帽子をめぐって争っているところを想像してみてください。大混乱が起こります。 ?

まとめ: 静電気の概要

Java の静的キーワードは、DJ、ピザ屋、パーティーの VIP ラウンジのようなものです。これにより、すべてがよりスムーズに、より効率的になり、ゲスト全員で共有されます。ユーティリティ メソッド、共有データ、または単にメモリを節約したい場合でも、静的はあなたの味方です。

ただし、すべてを静的な自由に変えないでください。賢く使用すれば、コードはクリーンで効率的で、混乱がなくなります ?.


それでおしまい!これで、プロのように静的な知識を吸収する準備が整いました ?.


リリースステートメント この記事は次の場所に転載されています: https://dev.to/akshay_gengaje/the-magic-of-static-in-java-one-for-all-and-all-for-one-1j0o?1 侵害がある場合、study_golang @163.comdelete までご連絡ください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3