美文网首页
5.Java初始化与清理

5.Java初始化与清理

作者: 云木杉 | 来源:发表于2018-07-16 11:21 被阅读0次

    清理与初始化那一章,那个难呀,太难了。

    用构造器确保初始化

    • 在Java中,通过提供构造器,类的设计者可确保每个对象都会得到初始化。
    • 创建对象时,如果其类具有构造器,Java就会在用户有能力操作对象之前自动调用相应的构造器,从而保证初始化的进行。

    方法重载

    • 在Java里,构造器是强制重载方法名的另一个原因。既然构造器(构造函数 无参)已经由类名决定,如果想用多种方式创建对象时(即可以用标准方式进行初始化,也可以多个参数作为构造来初始化),这就需要两个构造器
    • 区分重载的方法:每个重载的方法都必须有一个独一无二的参数类型列表。

    默认构造器

    this关键字

    • 通常写this,都是指“这个对象”或者当前对象,本身表示对当前对象的引用。
    • 一个类中写入多个构造器,当其中一个构造器想调用另外一个构造器时,使用this关键字。
    • 当构造参数的名称与当前成员变量的名称相同时,可用this关键字来区分

    清理:终结处理和垃圾回收

    • 对象可能不被垃圾回收
    • 垃圾回收并不等于“析构”
    • 垃圾回收只与内存有关
      Java清理模式
    • 停止-复制-清理 复制清理的大概逻辑是,暂停当前的程序,将所有存活的对象复制出到另一个怼,没有复制的都是可回收的,然后进行清理
    • 标记-清扫 所依据的思路同样是从堆栈和静态存储区出发,遍历所有的引用,进而找出所有存活的对象。找到一个就标记一个,全部标记完成时,开始清理动作。
    • 停止-复制 意思是这种垃圾回收动作不是在后台进行的。

    成员初始化

    • 局部变量 Java会强制初始化 但成员变量 有默认初始化值。

    构造器初始化

    • 成员变量初始化优先级 > 构造函数 > 成员方法
      总结一个对象的创建过程 假设有个名为Dog的类
    • 1 即使没有显示地使用static关键字,构造器实际上也是静态方法。因此,当首次创建类型为Dog的对象时(构造器可以看成静态方法),或者Dog类的静态方法首次被访问时,Java解释器必须查找类路径,定位Dog.class文件
    • 2 然后载入Dog.class,有关静态初始化的所有动作都会执行。因此,静态初始化只在Class对象首次加载的时候进行一次。
    • 3 当用new Dog()创建对象的时候,首先将在堆上为Dog对象分配足够的存储空间。
    • 4 这块存储空间将被清零,这就自动地将Dog对象中的所有基本类型数据都设置成了默认值,而引用被设置成了null。
    • 5 执行所有出现于字段定义处的初始化动作。
    • 6 执行构造器。
    • 静态代码块,只在生成这个类的一个对象时,执行一次。(或首次访问属于哪个类的静态数据成员时)

    数组初始化

    • 模模糊糊

    枚举

    • 模模糊糊

    相关文章

      网友评论

          本文标题:5.Java初始化与清理

          本文链接:https://www.haomeiwen.com/subject/cclfpftx.html