java基本数据类型缺省值

public class DefaultInitValue {
	
	private int iValue;	//0
	private long lValue;    //0
	private boolean bValue;	//false
	private char cValue;	//(short)0 || '\u0000'
	private float fValue;   //0.0
	private double dValue;	//0.0
	private String sValue;	//null
	@SuppressWarnings("unused")
	private final int i;
	
	public DefaultInitValue() {
		i = 1;
	}
	
	public static void main(String[] args) {
		
		DefaultInitValue div = new DefaultInitValue();
		System.out.println(div.iValue);
		System.out.println(div.lValue);
		System.out.println(div.bValue);
		System.out.println(div.cValue);
		System.out.println(div.fValue);
		System.out.println(div.dValue);
		System.out.println(div.sValue);
		if(div.cValue == 0 && div.cValue == '\u0000')
			System.out.println("cValue = '\u0000'");
	}
}

 输出为:
0
0
false

0.0
0.0
null
cValue = ' '

 * 若某个基本数据类型属于一个类成员,那么即使不明确(显式)进行初始化,也可以保证它们
   获得一个默认值。然而,这种保证却并不适用于局部变量——那些变量并非一个类的字段。
 * 对于局部变量,我们责任是在正式使用前分配一个适当的值。如果忘记,就会得到一条编译期错误,
   告诉我们变量可能尚未初始化。
 
 * final类型成员必须在声明时初始化或者在构造器中初始化。重载多个构造器时,每个构造器中
   都必须明确初始化或者调用具有初始化代码的构造器。确保final字段在使用前获得正确的初始化。

 * 类内所有private 方法都自动成为final。由于我们不能访问一个private 方法,
   所以它绝对不会被其他方法覆盖(若强行这样做,编译器会给出错误提示)。
 * 之所以要使用final 方法,可能是出于对两方面理由的考虑。第一个是为方法“上锁”,防止任何
   继承类改变它的本来含义。
   采用final 方法的第二个理由是程序执行的效率。将一个方法设成final 后,编译器就可以把
   对那个方法的所有调用都置入“内联(inline)”调用里。
 * 所谓内联函数就是指函数在被调用的地方直接展开,编译器在调用时不用像一般函数那样,参数
   压栈,返回时参数出栈以及资源释放等,这样提高了程序执行速度。

猜你喜欢

转载自jaesonchen.iteye.com/blog/2286589
今日推荐