20191014Java课堂记录

1. Java字段初始化的规律

首先执行类成员定义时指定的默认值或类的初始化块,到底执行哪一个要看哪一个“排在前面”。

其次执行类的构造函数。

类的初始化块不接收任何的参数,而且只要一创建类的对象,它们就会被执行。因此,适合于封装那些“对象创建时必须执行的代码”。

2. 静态方法中访问类的实例成员

public class Employee {
    String name;
    long salary;
    short employee_id;
    static int total_employees;
    static void clear(){
        total_employees=0;
        //类的静态方法只能访问类的静态成员!
        new Employee().salary=0;
        //在静态方法中访问类的实例变量需首先进行类的实例化
    }
}

3. 构造函数不全

public class Test {
    public static void main(String[] args) {
        Foo obj1 = new Foo();
    }

    class Foo {
        int value;

        public Foo(int initValue) {
            value = initValue;
        }
    }

}

错误原因:构造函数 Test.Foo()未定义

4. 静态初始化块的执行顺序

  1,静态初始化块只执行一次。

  2, 创建子类型的对象时,也会导致父类型的静态初始化块的执行。

5. 查询已创建对象数目

public class Test {
    static int testNum = 0;

    Test() {
        testNum++;
    }

    public static void main(String[] args) {
        System.out.println(testNum);
        Test t = new Test();
        System.out.println(testNum);

    }
}
原文地址:https://www.cnblogs.com/deepend/p/11673973.html