5.Java初始化与清理

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

用构造器确保初始化

  • 在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 执行构造器。
  • 静态代码块,只在生成这个类的一个对象时,执行一次。(或首次访问属于哪个类的静态数据成员时)

数组初始化

  • 模模糊糊

枚举

  • 模模糊糊
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容