chapter5 初始化与清理
2019-11-15 本文已影响0人
mark_x
chapter5 初始化与清理
2019年11月13日
19:49
- 在首次使用类(调用类的静态方法、new类的对象)时加载类的class文件。
new一个类对象后会立即对类成员进行初始化,顺序是静态变量→成员变量→构造器
举个🌰,有一个Dog类。 - 当首次创建类型为Dog的对象时(构造器可以看成静态方法),或者Dog类的静态方法/静态域首次被访问时,Java虚拟机必须查找类路径,以定位Dog.class文件。
- 然后载入Dog.class,有关静态初始化的所有动作都会执行,因此,静态初始化只在Class对象首次加载的时候进行一次。
- 当用new Dog()创建对象的时候,先初始化成员字段,再执行构造器方法。
- 可变参数
public class test1113 {
public void fun(Object...args){
System.out.println(args.length);
}
public static void main(String[] args) {
test1113 test = new test1113();
test.fun(new int[]{1,2,3}, 4);
test.fun(1,2,3,4);
}
}
args以数组的形式接受参数,第一次调用可变参数有两个, 一个是数组{1,2,3},一个是4,因此args数组有两个元素。第二次调用可变参数有4个,args数组有四个元素
public class OverloadingVarargs2 {
static void f(float i, Character... args) {
System.out.println("first");
}
static void f(Character... args) {
System.out.println("second");
}
public static void main(String[] args) {
f(1, 'a');
f('a', 'b');
}
}
报编译错误,因为对于f('a', 'b')调用,两个重载方法都可以与其匹配。