初始化与清理

时间:2021-10-31 19:46:43

1.构造器:无参构造器是java的默认构造器,构造器无返回值,这与void不同。

2.重载构造器和重载方法:重载方法通过一个独一无二的参数列表来区分不同的方法。不可以根据方法的返回值来区分重载方法

3.如果你的类中没有构造器,编译器会自动帮你创建一个默认构造器,但是你一旦你定义了构造器的话(无论是有参还是无参的),编译器是不会帮你自动创建构造器的。

4.在调用对象的某个方法的时候,编译器会自己将所操作对象的引用作为第一个参数传给该方法。

5.this关键字只能在方法内部使用,表示对“调用该方法的那个对象”的引用,如果在方法的内部调用同一个类的另一个方法,就不必使用this,直接调用即可。

6.在构造中通过this调用构造器。在构造器中,如果为this添加了参数列表,那么就有了不同的含义,这将产生对符合此参数列表的某个构造的明确调用;这样,调用其他构造器就有了直接途径

7.static方法就是没有this的方法,在static方法内部是不能使用非静态方法的,可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。

8.java允许在类中定义一个名为finalize()的方法。他的工作原理既定是这样的:一旦垃圾回收动作准备好释放对象占用的存储空间,将首先调用finalize()方法,并在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。所以finalize()能在垃圾回收时刻做一些重要的清理工作。

9.垃圾回收器如何工作,太深奥难懂了,在此不表。

10.方法的局部变量未赋值时会报错,但是在类中不会报错,会给其一个默认值。对象不引用时,如果不初始化,将会得到一个特殊值null;

11.可以用构造器来初始化,有一点要牢记,无法阻止自动初始化的进行(构造器)。

12.变量定义的先后顺序决定了初始化的顺序。即使变量定义散布于方法定义之间,他们仍旧会在任何方法(包括构造器)被调用之前得到初始化。

13.初始化的顺序是先静态对象(未被初始化),而后是“非静态”对象,再然后是静态方法。

14.构造器实际上也是静态方法

15.静态块,与其他静态初始化动作一样,这段代码仅执行一次:当首次生产这个类的一个对象,或首次访问属于那个类的静态数据成员时。

16可变参数列表:当你指定参数时,编译器会为你去填充数组,你获取的仍是一个数组,即可变参数列表实质上是一个数组。当传进去的是一个数组时,编译器会发现其是一个数组,所以不会将其进行转变。同时可变参数列表是不依赖自动包装机制的。也可以重载

17.枚举类型:enum有一些方法,如toString(),可以方便的显示某个enum实例的名字,还有ordianl(),表示某个特定enum常量的声明顺序。values()按照enum常量的声明顺序,产生由这些常量值构成的数组。