關於static代碼塊只執行一次的問題

今天編寫AI程序時遇到一個問題,關鍵代碼如下

public class Auto{
	static Cell[][] temp = new Cell[Tetris.ROWS][Tetris.COLS];
	static{
		try{
			temp = (Cell[][])Tetris.wall.clone();
		}catch(Exception e){
		}
	}
	static void display(){
		System.out.println(temp[19][0]);
	}
}

測試時僅在KeyAdapter中引用Auto.display();,但隨着Tetris.wall[][]的更新,temp[][]也隨着更新,十分疑惑。

經過探究,得知靜態代碼區只執行一次,這是指類被加載和釋放過程之間,但在這裏每一次使用Auto.display();類會被重新加載一次,所以temp也會隨着更新。


發佈了33 篇原創文章 · 獲贊 40 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章