chapter5 初始化与清理

2019-11-15  本文已影响0人  mark_x

chapter5 初始化与清理
2019年11月13日
19:49

  1. 在首次使用类(调用类的静态方法、new类的对象)时加载类的class文件。
    new一个类对象后会立即对类成员进行初始化,顺序是静态变量→成员变量→构造器
    举个🌰,有一个Dog类。
  2. 当首次创建类型为Dog的对象时(构造器可以看成静态方法),或者Dog类的静态方法/静态域首次被访问时,Java虚拟机必须查找类路径,以定位Dog.class文件。
  3. 然后载入Dog.class,有关静态初始化的所有动作都会执行,因此,静态初始化只在Class对象首次加载的时候进行一次。
  4. 当用new Dog()创建对象的时候,先初始化成员字段,再执行构造器方法。
  5. 可变参数
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')调用,两个重载方法都可以与其匹配。

上一篇 下一篇

猜你喜欢

热点阅读