java编程思想第五章_《JAVA编程思想》学习笔记——第五章 初始化与清理

构造器

和类名相同,分无参构造器和有参构造器

方法重载

依据参数列表的不同进行重载,不能依据返回值的不同进行重载(因为很多方法的调用并不关心返回值)

this关键字

this关键字只能在方法内部使用,标识对"调用方法的那个对象"的引用。

return this, 返回当前对象的引用,可以对当前对象进行链式操作

构造器中调用构造器,使用this(args),且必须将构造器调用放在最起始处,否则编译器报错

static

static方法就是没有this的方法。在static方法的内部不能调用非静态方法,反过来倒是可以的,而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。

finalize()方法

工作原理:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。所以要是你打算用finalize(),就能在垃圾回收时刻做一些重要的清理工作。

不推荐适用finalize()做清理工作,因为对象可能不被垃圾回收,finalize()也就不会被保证一定被执行。所以不要指望finalize(),必须创建其它的清理方法,并且明确地调用它们。

成员初始化

基本类型字段,默认初始化为boolean(false),char(),byte(0),short(0),int(0),long(0),float(0.0),long(0.0)。

引用类型,默认初始化为null

指定初始化:定义字段时即初始化,所有对象的字段初始值都一样

构造器初始化:创建对象时,初始化

初始化顺序:在类的内部,变量定义的先后顺序决定了初始化的顺序。且优先级大于构造器初始化

静态初始化

第一次访问静态数据的时候,静态对象会被初始化。伺候,静态对象不会再次被初始化。

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

静态显示初始化

class XX {

static {

xx;

}

}

与其它静态初始化动作一样,这段代码仅执行一次,当首次生成这个类的一个对象时,或者首次访问       属于那个类的静态数据成员时(即便从未生成过那个类的对象)

非静态实例初始化

class XX {

{

xx;

}

}

当创建该类的对象时,无论调用那个构造器, {xx;}都将会被执行

数组初始化

数组是相同类型的,用一个标识符名称封装到一起的一个对象序列或基本类型数据序列。

数组定义方式:int[] a; int a[], 前者更符合语义,后者为c++中常用的形式

初始化:int[] a = {1,2,3,4,5,6};

可变参数列表

class XX {

xx(Object[] args) {}

yy(ClassType... args) {}

}

有了可变参数,就再也不用显式地编写数组语法了,当你指定参数时,编译器实际上会为你去填充数组。你获取的仍旧是一个数组

枚举类型

public enum Color {

RED, WHITE, YELLOW;

}

public enum ReturnCode {

SUCCESS("0", "ok"), FAIL("1", "error");

String code;

String message;

ReturnCode(String code, String message) {

this.code = code;

this.message = message;

}

}

枚举本质上还是一个类,所有类的很多特性在枚举里面也是通用的。枚举可以用于switch

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值