默認值小陷阱

首先看一個小程序:

public class DefaultTest {
	public static void main(String[] args) {
		int num;
		System.out.println(num);
	}
}

這個程序首先是編譯通不過的,所以不能打印出想象中的0.  

分析num的初始值是0不假,但是這個num是main方法的局部變量,系統根本沒有給它賦予默認值的機會。所以這是錯誤的。也就是說即使一個變量有初始值,那也得讓系統有給它賦值的機會(比如,初始化的時候)。有默認的初始值和已經給變量賦值是兩個不同的概念.Java爲所有的成員變量提供了默認初始化,局部變量需要自己初始化.此處定義的num是局部變量,在編譯時是不會被默認初始化的,必須得顯示的進行初始化才行;如果是實例變量的話,就會在編譯的時候進行默認的初始化,即爲0。


所以要輸出num的默認值0,正確的寫法應可以是以下三種方式:

public class DefaultTest {
	public static void main(String[] args) {
		int num =0 ;
		System.out.println(num);
	}
}

public class DefaultTest {
	int num;

	public static void main(String[] args) {
		DefaultTest test = new DefaultTest();
		System.out.println(test.num);
	}
}
public class DefaultTest {
	static int num;

	public static void main(String[] args) {

		System.out.println(num);
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章