默认值小陷阱

首先看一个小程序:

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);
	}
}



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