成员初始化
成员初始化的顺序:先静态对象(如果它们尚未因前面的对象创建过程而被初始化),然后再是“非静态”对象。
一、 显示的静态初始化
public class Spoon{
static int i;
static double j;
static{
i = 27;
j = 10.23;
}
}
这段代码中static块只执行一次,即只在第一次生成对象的时候。
二、数组初始化
如:
int[ ] a1 = {1,2,3,4,5};
int[ ] a2;
a2 = a1;
以上代码只是将a1的引用复制给了a2,即操作a2数组就等于操作a1,因为a1和a2指向的是同一个引用。
三、可变参数列表
public class OverloadVarargs{
static void f(float i,Character... args){
System.out.println("first");
}
static void f(char c,Character... args){
System.out.println("second");
}
public static void main(String[] args){
f(1,'a');
f('a','b');
}
}
以上可变参数的方法重载,最好在可变参数之前加上一个非可变参数,因为这样可以使java编译器更准确的选择具体哪一个重载方法。
关于final的使用
final关键字,分三种情况来分析:数据、方法和类。
1.final数据,必须是基本数据类型,用final修饰表这是一个常量,不可被修改。(static强调只有一份,final说明是一个常量)
2.final参数,将参数指明为final,意味着无法在方法中更改参数引用所指向的对象。
3.final方法,将某个方法指定为final说明,该方法被锁定,防止任何继承类来修改。
4.final类,将某个类指定为final则说明,该类是最终的,不希望被继承,其该类下所有的方法也是final。