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); } }