javaのstaticの使い方

1743 ワード

1.静的変数
一つのクラスのすべてのインスタンスにデータを共有したい場合は、静的変数を使用してください。静的変数は、変数値をクラスの共通メモリに格納します。共通メモリなので、あるオブジェクトが静的変数の値を変更すると、同じクラスのすべての静的変数の値を使用するオブジェクトが影響を受けます。たとえば:
public class helloWorld {

	public static void main(String[] args) {

		StaticVariable s1 = new StaticVariable();
		StaticVariable s2 = new StaticVariable();

		System.out.println("s1.a = " + s1.a + " and " + "s2.a = " + s2.a);
		s1.add();
		System.out.println("s1.a = " + s1.a + " and " + "s2.a = " + s2.a);

	}
}

class StaticVariable {

	static int a = 0;

	void add() {
		a++;
	}
}
運転結果は以下の通りです。
s1.a = 0 and s2.a = 0
s1.a = 1 and s2.a = 1
2.静的方法
staticキーを付加しない方法は例示的な方法であり、javaでは「オブジェクト参照変数.メソッド名(パラメータ)」を使用して例示的な方法を呼び出す。先例のように‘s 1.add()’.
static方法は、以下の2つの方法で呼び出すことができる。
  • 類名.メソッド名(パラメータ)//クラス名で
  • を呼び出します。
  • オブジェクト参照変数.メソッド名(パラメータ)//クラスの例で
  • を呼び出す。
    たとえば:
    public class helloWorld {
    	public static void main(String[] args) {
    		StaticVariable s1 = new StaticVariable();
    		s1.add(); // invoke static method by the instance of class
    		StaticVariable.add(); //invoke static method by class name
    	}
    }
    class StaticVariable {
    	static int a = 0;
    	static void add() {
    		a++;
    	}
    }
    
    3. 
    スタティッククラス
    普通のクラスでは静的な宣言は許されないが、内部クラスは静的であると宣言することができる。このとき、この宣言は、外部クラスの実例を必要とせずに、静的な内部クラスとして直接に使用することができる。たとえば:
    public class helloWorld {
    
    	public static void main(String[] args) {
    		new OuterClass.InnerClass();
    	}
    }
    
    class OuterClass {
    	public static class InnerClass {
    		InnerClass() {
    			System.out.println("InnerCls");
    		}
    	}
    }
    結果:
    This is InnerClass