五初始化与清理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了五初始化与清理相关的知识,希望对你有一定的参考价值。

阅读理解:

  1、如果java类未提供构造器系统会提供默认的无参构造器,如果只提供带参数的构造器,再调用A a = new A();时会报错。

 

  2、区分方法重载:独一无二的参数类型列表。

    参数顺序可以区分两个方法,但会使代码难以维护,所以不建议;

    返回值不能区分重载 void f() 和 int f()在遇到调用f()方法而不要求返回的情况下无法确认究竟调用哪一个。

 

  3、this

    Class a = new Class();

    Class b = new Class();

    a.f(1);

    b.f(2);

    系统内部表现形式:

    Class.f(a, 1);

    Calss.f(b, 2);

    this指代调用方法的那个对象,对上即为a或者b;

    this也可在构造器中调用其他构造器,但只能位于构造器中的第一行;

    return this返回调用的对象可以实现链式调用如:a.f().g().print().

 

  4、static方法内部不能访问非静态方法,不能访问非静态成员变量,因为通过类访问静态方法或者成员变量时非静态成员还未

存在,非静态方法只能通过对象访问,非静态方法可以访问静态成员变量和静态方法。

 

  5、垃圾回收的策略:停止-复制、标记-清扫、自适应技术(自适应的、分布式的、停止-复制、标记-清扫垃圾回收方式),前两种需要停止程序去回收垃圾。

 

  6、java尽力保证所有变量在使用前都能得到恰当的初始化,对于方法中的局部变量java通过编译时错误的形式来贯彻这种保证。

    无法阻止自动初始化的进行,他讲在构造器被调用之前进行,

      Public class Counter{

        int i;

        Counter(){ i = 7;}

      }

      调用构造器之前i会先默认初始化为0。

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

 

  7、对象创建过程,以类A为列:

    1)即使没有显示地使用static关键字,构造器实际上也是静态方法。因此,当首次创建类型为A的对象时(构造器可以看成为静态方法),或者A类的静态方法或者静态域首次被访问到时,java解释器都必须找到类路径,已定位A.calss;

    2)当载入A.class后,有关静态初始化的所有动作都会执行。因此,静态静态初始化只会在class对象首次加载的时候执行一次;

    3)单用new A()创建对象时,首先将在堆上为A对象分配足够的存储空间;

    4)这块存储空间会被清零,这就自动将A类的所有基本数据类型设置成了默认值(对数字来说是0,对布尔和字符型也相同),而应用设置成了null;

    5)执行所有出现于字段定义处的初始化动作;

    6)执行构造器。

以上是关于五初始化与清理的主要内容,如果未能解决你的问题,请参考以下文章

初始化与清理(下)

Java初始化与清理

初始化与清理

5初始化与清理

《java编程思想》 初始化与清理

Chapter5_初始化与清理_用构造器初始化