第5章 初始化与清理

来源:互联网 发布:电脑音乐剪辑软件 编辑:程序博客网 时间:2024/04/30 20:03

正确的初始化与清理是保证计算机程序健康运行的根本,在Java程序中使用构造器来确保初始化,使用垃圾回收器来清理无用内存。本章主要讨论初始化和清理的相关问题,以及Java对它们提供的支持。

1. 构造器

通过提供构造器,类的设计者可以确保每个对象都会得到初始化。

构造器采用与类名相同的名字,在对象创建时由编译器负责其调用。

构造器是一种特殊类型的方法,无返回值。

2.方法重载

方法名称相同但参数列表不同叫做方法重载。

每个重载的方法必须有一个独一无二的参数类型列表:参数类型不同,参数数量不同,参数顺序不同。

基本类型自动转换的重载:隐式转换时,将调用最接近传入参数类型的方法;窄化转换时,需要明确指定转换的类型。

在某些情况下可以使用返回值来区分重载方法,但如果调用方法只是为了使用方法调用的副作用而忽略其返回值时,便无法根据返回值来区分重载。

3.默认构造器

若类中没有构造器,则编译器会自动创建一个默认构造器;若已明确定义,则不会创建。

4.this关键字

this可表示当前对象的引用。

this()用来在构造器中调用其他构造器。

static修饰的成员属于类所有。

5.清理

在Java中,1.对象可能不被垃圾回收2.垃圾回收并不等于析构3.垃圾回收只与内存有关。

若JVM并未面临内存耗尽的情况,它是不会浪费时间去执行垃圾回收的。

finalize()方法可以执行对象终结条件(当一个对象需要清理时,它应处于某种状态)的验证。

Java虚拟机会监控堆空间中内存碎片数量,碎片少时使用标记-清扫方式处理,碎片多时使用停止-复制方式清理。

6.初始化

在定义成员变量时为其赋值,若未赋值,则将使用相应数据类型的默认值为其初始化。

7.构造器初始化

自动初始化的进行在构造器被调用之前。

在类的内部,定义变量的顺序决定了初始化的顺序,即使变量定义散布于方法定义之间。

初始化的顺序是先静态对象(如果它们尚未因前面的对象创建过程而被初始化),而后是”非静态”对象。

static代码块仅执行一次,即在首次生成这个类的一个对象时,或者首次访问属于这个类的静态数据成员时。

8.数组初始化

数组创建时,数组元素中的基本数据类型会自动初始化成空值。

Java SE5增加了对可变参数列表的支持。

9.枚举类型

Java SE5中添加了enum关键字。

enum本质上也是类。

enum 可以在switch语句中使用。

在定义枚举类型时,编译器会自动为其添加一些有用的特性。

10.总结

本章可以延伸的很深,例如类加载机制,变量初始化顺序、垃圾回收机制等,但目前仅做一些浅显的记录。

原创粉丝点击