正直に言うと、静的キーワードに初めて出会ったとき、誰もが次のように考えます。「これはどんな魔術ですか?」 ?でも心配しないでください。ここでは、シンプルで奥深く、そしておそらく少し楽しい方法でそれを詳しく説明します!
あなたがパーティーにいるところを想像してみてください?あなたもあなたの友達もみんな帽子をかぶっています。しかし、全員が共有しなければならない帽子は 1 つ だけです。これは基本的に Java で static キーワードが行うことです。友達ごとに帽子を作成する (面倒になる可能性があります) 代わりに、グループ (クラス) に属する帽子を 1 つ 用意し、全員が順番にそれをかぶることができます。
このイメージを念頭に置いたところで、Java における static が実際に何をするのかを詳しく見ていきましょう。
静的とはどういう意味ですか?
簡単に言えば、Java で static キーワードを使用すると、「ここにあるこれは、そのクラスの特定のオブジェクトではなく、クラス自体に属している」と言っていることになります。
これは次のことを意味します:
- オブジェクトは不要: 静的変数または静的メソッドを使用するためにオブジェクトを作成する必要はありません。直接電話してください!
- すべてのオブジェクトで共有: オブジェクトを作成すると、すべてのオブジェクトが同じ静的なものを共有します。 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 つ だけであり、それは個々のゲストではなく パーティー クラス に属します。
静的メソッド: ピザの配達員 ?
静的メソッドはパーティーのピザの配達員のようなものです。電話をかけると、招待状 (オブジェクト) を必要とせずに現れます。パーティーの数に関係なく、同じピザ屋が全員にピザを配達します。ピザ屋 (クラス) に電話するだけで、彼らが来てくれます!
例:
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 ラウンジのようなものです。
静的を使用する理由
さて、あなたは次のように考えているかもしれません。「これはとても素晴らしいことですが、実際に静的をいつ使用すればよいでしょうか?」 さて、これがチートシートです:
- 定数の場合: 決して変化しないもの (Pi など)。定数には static Final を使用します。例: staticfinal double PI = 3.14159;
- ユーティリティ メソッドの場合: オブジェクトの状態に依存しない関数。 Math.pow(). について考えてみましょう。
- 共有データの場合: 何かが作成された回数を数えるなど、クラスのすべてのインスタンスが値を共有する必要がある場合。
- 効率化のため: オブジェクトが必要ないときはオブジェクトを作成しないでください。代わりに静的メソッドまたは変数を使用してください!
舞台裏: 静電気はどのように機能するのか? ?️
さて、カーテンの後ろを覗いてみましょう。魔法がどのように起こるかは次のとおりです:
- メモリ管理: 静的変数とメソッドは、メモリの メソッド領域 に存在します (オブジェクトが存在するヒープ内ではありません)。つまり、クラスが最初にロードされるときに1 回ロードされ、プログラムが終了するまでそこに留まります。
- 初期化: 静的変数とブロックは、クラスがメモリにロードされるときに初期化されます(オブジェクトの作成時ではありません)。したがって、オブジェクトが作成される前に使用する準備ができています。
- アクセス: 静的変数やメソッドは特定のオブジェクトではなくクラスに属しているため、それらにアクセスするためにオブジェクトは必要ありません。
ゲストが到着する前にスナックテーブルを準備するようなものです。各ゲストに自分の食べ物を持ってくるように頼む必要はありません。共有の軽食を自分で食べるだけです。
注意: やりすぎないでください。 ?
ほとんどのことと同様、静電気が多すぎると悪影響が生じる可能性があります。以下にいくつかの警告があります:
- オブジェクトなし、非静的要素へのアクセスなし: 静的メソッドは、オブジェクトではなくクラスに属しているため、非静的 (インスタンス) 変数またはメソッドにアクセスできません。言い換えれば、ピザ屋はプレイリストの選択を手伝うことはできません。彼が扱うのはピザだけです。
- スレッドの安全性: 複数のスレッドが同じ静的変数を変更すると、状況が混乱する可能性があります (同期を処理しない限り)。 2 人のゲストが同じ帽子をめぐって争っているところを想像してみてください。大混乱が起こります。 ?
まとめ: 静電気の概要
Java の静的キーワードは、DJ、ピザ屋、パーティーの VIP ラウンジのようなものです。これにより、すべてがよりスムーズに、より効率的になり、ゲスト全員で共有されます。ユーティリティ メソッド、共有データ、または単にメモリを節約したい場合でも、静的はあなたの味方です。
ただし、すべてを静的な自由に変えないでください。賢く使用すれば、コードはクリーンで効率的で、混乱がなくなります。
それだけです!これで、プロのように静的な知識を吸収する準備が整いました?
以上がJava の「static」の魔法: 1 つは全員のために、そして全員は 1 のために!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、Lambda式、Streams API、メソッド参照、およびオプションを使用して、機能プログラミングをJavaに統合することを調べます。 それは、簡潔さと不変性を通じてコードの読みやすさと保守性の改善などの利点を強調しています

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、単一のスレッドで複数の接続を効率的に処理するためにセレクターとチャネルを使用して、非ブロッキングI/O用のJavaのNIO APIについて説明します。 プロセス、利点(スケーラビリティ、パフォーマンス)、および潜在的な落とし穴(複雑さ、

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、ネットワーク通信のためのJavaのソケットAPI、クライアントサーバーのセットアップ、データ処理、リソース管理、エラー処理、セキュリティなどの重要な考慮事項をカバーしています。 また、パフォーマンスの最適化手法も調査します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ホットトピック



