1. 程式人生 > >java類載入和常量的小例子

java類載入和常量的小例子

通過下面的兩個例子簡單瞭解一下常量與類的載入的關係。

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
class 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);
	}
	
}
結果為:2
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的值,只有在載入時才能夠確定。

結論:當一個類呼叫靜態常量時,類是不會被載入。