LX【468x60】


静的変数と静的メソッド



コード

class TCls{

	String Name;
	
	//静的変数
	static int Num;
	static int nArray[];
	
	//静的初期化ブロック
	static {
		
		System.out.println("静的初期化ブロックの実行順序");
		
		nArray = new int[3];
		
		for(int i = 0; i < 3; i++)
		{
			nArray[i] += i + Num;
		}
		
	}

	
	//静的メソッド
	static int NumUp(){
		System.out.println("静的メソッドの実行順序");
		
		++Num;
		
		return Num;
	}
	
	
	//コンストラクタ
	TCls(String Str)
	{
		Name = Str;
		++Num;
		
		/*
		for(int i = 0; i < 3; i++)
		{
			nArray[i] += i + Num;
		}
		*/
	}
	
	//
		
}

public class Test_StaticIns {

	public static void main(String[] args) {
		
		System.out.println("Start");

		//
		System.out.println("------------------------");
		
		//静的初期化はプログラム実行時に実行される。

		System.out.println("Num = " + TCls.Num);	
		for(int i = 0; i < TCls.nArray.length; i++){
			System.out.println(i + " = " + TCls.nArray[i]);			
		}
		
		System.out.println("NumUp = " + TCls.NumUp());
		
		System.out.println("");	
		
		
		//
		System.out.println("//////   A01   /////");
		TCls A01 = new TCls("A01");

		System.out.println("Num = " + TCls.Num);	
		for(int i = 0; i < TCls.nArray.length; i++){
			System.out.println(i + " = " + TCls.nArray[i]);			
		}
		
		//System.out.println("A01 NumUp = " + A01.NumUp()); 
		//静的にアクセスするように注意される。
		
		System.out.println("");	
		

		//
		System.out.println("//////   A02   /////");
		TCls A02 = new TCls("A02");

		System.out.println("Num = " + TCls.Num);	
		for(int i = 0; i < TCls.nArray.length; i++){
			System.out.println(i + " = " + TCls.nArray[i]);			
		}
		System.out.println("");	
		
		
		//
		System.out.println("------------------------");
		
		System.out.println("End");
	}
}
			


結果

Start
------------------------
静的初期化ブロックの実行順序
Num = 0
0 = 0
1 = 1
2 = 2
静的メソッドの実行順序
NumUp = 1

//////   A01   /////
Num = 2
0 = 0
1 = 1
2 = 2

//////   A02   /////
Num = 3
0 = 0
1 = 1
2 = 2

------------------------
End
			

 


<戻る>