Java の static キーワードには 2 つの主な機能があります:
最初: 作成されたオブジェクトの数に関係なく、特定のデータ型またはオブジェクトに単一の記憶域スペースを割り当てます。
2 番目に、オブジェクトではなくクラスに関連付けられたメソッドまたは属性を実装します
簡単に言うと、Java 言語では、static の主な用途が 5 つあります: メンバー変数、メンバー メソッド、コード ブロックです。内部クラスと静的インポート パッケージ。
基本的な使用法:
静的変更メンバー変数: このメンバー変数はクラス変数に属しており、クラス外の新しいインスタンスを必要とせずに、ClassName.attributeName を通じて直接参照できます。
静的変更メンバー メソッド: このメソッドはクラスのメソッドに属しており、クラスの新しいインスタンスを必要とせずに ClassName.methodName を通じて直接参照できます。
静的変更コード ブロック: クラスが初期化されるときに 1 回だけ実行され、読み込み順序はクラス内の静的リソースの定義順序に厳密に従っています。静的コード ブロックは次の目的で使用できます。その後に定義された静的変数は割り当てられますが、アクセスできません。 ;親クラスのコード ブロック -> 子クラスのコード ブロック。
静的変更内部クラス: static は通常のクラスを変更できませんが、static によって変更された内部クラスの作成メソッドのみを変更できます: newOuterClass.InnerClass()。
staticImport package: 構文 "import static java.lang.Math.*" により、クラス名を記述せずにクラス内の Math クラスの静的メソッドを直接使用できるようになります。私の意見としては、特定のクラスを頻繁に使用する場合には便利ですが、可読性が低下します。そして、インポートすることはお勧めしません *
以下は、static のさまざまな使用例です
static で変更されたメンバー変数とメンバー メソッド
いくつかの結論:
/** * * Created by ascend on 2017/6/9 13:51. */public class Test {public static void main(String[] args) throws ClassNotFoundException { Class.forName("net.liebao.test.A"); } }class A {static { System.out.println("A.static initializer"); }public A() { System.out.println("A.A"); } }
出力:
A.static initializer
結論 1: 静的リソースはクラスに属しますが、クラスが初期化されるときに (新規よりも前に) ロードされます。 たとえば、Class. forName("xxx") クラスの静的リソースをロードしますが、新しいリソースはありません。
結論2: 静的リソース(静的メンバー変数、静的メンバーメソッド、以下同様)は非静的リソースにアクセスできません 非静的リソースは新しいときにのみ生成されるため、アクセスできません。逆に、非静的リソースにはアクセスできません。
結論3: 静的リソースは静的リソースにアクセスできますが、静的リソースはその後に定義された静的リソースに値を割り当てることができますが、その後に定義された静的リソースにはアクセスできないことに注意する必要があります静的リソースのもう 1 つの一般的な使用法
は、シングルトン モードを静的に実装することです
シングルトン モードの特徴は、この機能を実現するために、クラスが 1 つのインスタンスしか持てないことであることは誰もが知っています。クラスの構造は非表示関数である必要があります。つまり、コンストラクターをプライベートとして宣言し、オブジェクトを作成するメソッドを提供します。構築されたオブジェクトはプライベートとして宣言されているため、外部からこの型のオブジェクトを直接作成することはできません。この目的を達成するには、オブジェクトを作成するメソッドを static として宣言するだけです。
class Singleton {private static Singleton instance = new Singleton();//私有化构造函数private Singleton(){}public static Singleton getInstance(){return instance; } }
上記のシングルトンは次のとおりです。モードは飢えた人モードです
以上がJava の static キーワードの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。