ホームページ >Java >&#&チュートリアル >Java の改善 (6) -----キーワード static

Java の改善 (6) -----キーワード static

黄舟
黄舟オリジナル
2017-02-09 13:40:27998ブラウズ

1. static は何を表しますか

Java にはグローバル変数の概念はありませんが、Java では static は「グローバル」または「静的」を意味し、変更するために使用されます。メンバー変数とメンバー メソッド、そしてもちろんコード ブロック。

Java はメモリをスタック メモリとヒープ メモリに分割し、スタック メモリはいくつかの基本的なタイプの変数、配列、オブジェクト参照を格納するために使用され、ヒープ メモリは主に一部のオブジェクトを格納します。 JVM がクラスをロードするとき、クラスに静的に変更されたメンバー変数とメンバー メソッドがある場合、これらの「固定」機能を使用して、固定サイズのメモリ領域がこれらのメンバー変数とメンバー メソッド用に固定された場所に開かれます。非常に便利にアクセスできます。同時に、静的メンバー変数とメンバー メソッドがスコープ外にならない場合、それらのハンドルは変更されません。同時に、static に含まれる「静的」という概念は、修復不可能、つまり、その場所を変更すると、クリーンアップしても元の状態に戻らないことを意味します。戻ってくる。

static によって変更されたメンバー変数とメンバー メソッドは、特定のインスタンス変数に依存しません。つまり、クラスのすべてのインスタンスで共有されます。すべてのインスタンスの参照は同じ場所を指しており、いずれかのインスタンスを変更すると、他のインスタンスも変更されます。

public class User {  
    private static int userNumber  = 0 ;  
      
    public User(){  
        userNumber ++;  
    }  
      
    public static void main(String[] args) {  
        User user1 = new User();  
        User user2 = new User();  
          
        System.out.println("user1 userNumber:" + User.userNumber);  
        System.out.println("user2 userNumber:" + User.userNumber);  
    }  
}      
------------  
Output:  
user1 userNumber:2  
user2 userNumber:2

2. static の使い方

static は、クラス名を通じて直接アクセスできるメンバー変数およびメンバーメソッドを変更するために使用できます。 ClassName..PropertyName

ClassName.MethodName (...)

静的変更コード ブロックは、JVM がロードされると、このコードが実行されることを示します。これは非常に便利です。 (ここ数日のコードブロックの使用については注意してください)

2.1. 静的変数

static で変更された変数は static 変数と呼ばれ、static で変更されなかった変数はインスタンス変数と呼ばれます。違いは次のとおりです:

静的変数は、クラスがロードされるときに初期化され、メモリ内に 1 つだけあり、JVM は一度だけメモリを割り当てます。同時に、クラスのすべてのインスタンスが共有します。静的変数。クラス名を直接渡すとアクセスできます。

しかし、インスタンス変数は異なります。インスタンスが作成されるたびにインスタンス変数が生成され、インスタンスとともに存続し、消滅します。

したがって、私たちは通常、オブジェクト間でのデータ共有と簡単なアクセスという 2 つの状況で静的変数を使用します。

2.2. 静的メソッド

静的に変更されたメソッドは静的メソッドと呼ばれ、クラス名を通じて直接呼び出します。クラスがロードされたときに存在するため、インスタンスに依存せず、静的メソッドを実装する必要があります。つまり、抽象メソッドにすることはできません。

静的メソッドはクラス内の特別なメソッドです。本当に必要な場合にのみメソッドを静的として宣言します。たとえば、Math クラスのすべてのメソッドは静的です。

2.3. 静的コードブロック

静的コードブロックはクラスがロードされると実行され、どこにでも配置できます。


3. 静的の制限

Static には多くの機能がありますが、いくつかの欠点もあります。

1. 静的変数のみを呼び出すことができます。

2. 静的メソッドのみを呼び出すことができます。

3. this と super はいかなる形式でも引用できません。

4. 静的変数は定義時に初期化する必要があり、初期化時間は非静的変数よりも早くなければなりません。

要約: 変数、メソッド、またはコード ブロックのいずれであっても、静的に変更されている限り、クラスがロードされた時点で「準備完了」になります。つまり、使用できるか実行されています。オブジェクトがなくても実行できます。逆に、static がない場合は、オブジェクト インスタンスに依存する必要があります。

上記は Java 改善章 (6) の内容です ----- キーワード static の詳細については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


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