码迷,mamicode.com
首页 > 其他好文 > 详细

五、初始化与清理

时间:2016-06-25 16:21:07      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

阅读理解:

  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)执行构造器。

五、初始化与清理

标签:

原文地址:http://www.cnblogs.com/zhengzm1992/p/5616447.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!