JAVA類的生命週期實踐加理解
阿新 • • 發佈:2020-08-24
程式碼
public class TestClass { public static int k=0; public static TestClass t1=new TestClass("t1"); public static TestClass t2=new TestClass("t2"); public static int i=print("i"); public static int n=99; public int j=print("j"); { print("構造塊"); } static { print("靜態塊"); } public TestClass(String str) { System.out.println((++k)+""+str+"i="+i+"n="+n); ++n; ++i; } public static int print(String str){ System.out.println((++k) +":" + str + " i=" + i + " n=" + n); ++n; return ++ i; } public static void main(String[] args){ System.out.println("=========start============"); TestClass t = new TestClass("init"); System.out.println("=========end============"); } }
執行結果
1:j i=0 n=0
2:構造塊 i=1 n=1
3t1i=2n=2
4:j i=3 n=3
5:構造塊 i=4 n=4
6t2i=5n=5
7:i i=6 n=6
8:靜態塊 i=7 n=99
=========start============
9:j i=8 n=100
10:構造塊 i=9 n=101
11initi=10n=102
=========end============
講解
// 程式碼由上到下 依次執行 // 由static修飾的變數或方法是在方法區,屬於類變數、類方法 // new物件這個操作,new出來的物件在堆裡 物件的引用在棧裡 // new出來的物件 方法快先構造方法執行