java類載入和常量的小例子
阿新 • • 發佈:2019-02-12
通過下面的兩個例子簡單瞭解一下常量與類的載入的關係。
class FinalTest
{
static
{
System.out.println("static block ");
}
public static final int a = 6/3;
}
public class Test1
{
public static void main(String[] args)
{
System.out.println(FinalTest.a);
}
}
輸出結果為:2
結果為:2class FinalTest { public static final int a = 6/3; static { System.out.println("static block "); } } public class Test1 { public static void main(String[] args) { System.out.println(FinalTest.a); } }
import java.util.Random;
class FinalTest2
{
public static final int a = new Random().nextInt(10);
static
{
System.out.println("static block 2");
}
}
public class Test2
{
public static void main(String[] args)
{
System.out.println(FinalTest2.a);
}
}
結果為:6(隨機的)
static block 2
import java.util.Random; class FinalTest2 { static { System.out.println("static block 2"); } public static final int a = new Random().nextInt(10); } public class Test2 { public static void main(String[] args) { System.out.println(FinalTest2.a); } }
結果為:4(隨機的)
static block 2
四個程式不同的地方是a是否為常量還是變數,如果為常量時,在編譯的時候就確定了值,所以不用載入就能夠使用,而隨機產生的在編譯時不能確定a的值,只有在載入時才能夠確定。
結論:當一個類呼叫靜態常量時,類是不會被載入。