【Thinking in Java】初始化与清理(二)

局部变量不会自动进行初始化,而类变量会

在new出一个对象时,Java会在堆中为此对象分配一个内存块,并将内存块上的数据全部清零。这就是为什么类变量会自动初始化成0和null的原因。


初始化顺序

静态变量—>类变量—>构造方法,且静态变量只初始化一次,类变量可能会初始化多次(eg: 对同一个类new出两个对象时)。


数组的“复制”

把一个数组赋值给另一个数组,其实真正做的只是复制了一个引用。当前一个数组内的值改变时,后一个数组也会改变。


可变参数列表

public class OptionalTrailingArguments {
	static void f(int required,String...trailing){
		System.out.print(required+" ");
		for(String s:trailing){
			System.out.print(s+" ");
		}
		System.out.println("");
	}
	public static void main(String[] args){
		f(1,"one");
		f(2,"two","three");
		f(3);
	}
}

可变参数列表会使重载变得复杂。对于同一个方法f,可变参数列表类型不同,即发生重载。又由于可变参数列表允许不传入参数,所以编译器在遇到f()时不知道该调用哪个方法。推荐做法是,在程序里只出现一个可变参数列表的方法,或者和上面的代码一样,指定一个不可变参数。


枚举类型

enum对象可以在switch语句内使用,是switch的绝佳组合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值