5 初始化与清理

5 初始化与清理

5.2.1 区分重载方法

每一个重载方法都必须有独一的参数类型列表(包括参数的类型和参数的顺序)
不能以返回值来区分重载方法

5.6 成员初始化

1 局部变量未初始化不能通过编译
2 类的数据成员会保证得到一个初始值

5.7 构造器初始化

无法阻止自动初始化的进行,自动初始化将在构造器调用之前执行

5.7.1 初始化顺序

变量初始化的顺序取决于类内部变量定义的先后顺序

5.7.2 静态数据的初始化

静态初始化仅在必要时刻进行,并且只会进行一次。
初始化的顺序是静态对象初始化在前,然后是非静态对象。

对象创建过程(不考虑继承的情况)

1 java解释器查找类路径,定位class文件。
2 载入class文件,创建class对象,静态初始化的所有动作此时执行(静态初始化的所有动作只在class对象首次加载时执行一次)
3 如果是new 方法创建对象,此时应该在堆上为此对象分配空间
4 根据字段定义顺序执行字段的初始化
5 执行构造器

5.7.3 显示静态初始化 static{}

只是一段代码块,同样只会执行一次(在创建这个类的第一个对象的时候,或者第一次访问这个类的静态数据成员的时候)

5.7.3 非静态实例初始化 {}

用来初始化非静态变量,可以用来保证无论使用哪个构造器,{}中的操作都会发生,因为{}中的实例化子句在构造器之前执行

5.8.1 可变参数列表

java SE5之后,可以用下面的方式声明可变参数

static void myMethod(Object... args)//args是一个Object数组

static void myMethod2(String... args)//args是一个String数组

调用myMethod时,传入的参数可以是0个或者其他任意个object,所以为了防止与无参的static void myMethod()混淆,方法中应该至少包含一个非可变参数

5.9 枚举类型

javaSE5之后可以使用enum关键字来定义枚举

pulic enum MyEnum{
    SMALL,MEDIUM,BIG
}

为了使用enum,需要创建一个该类型的引用

MyEnum small = MyEnum.SMALL;
//编译器会为small添加很多有用的方法,如toString(),ordinal(),values()
//values()按照enum常量的声明顺序返回常量构成数组

enum的实用特性:
enum可以作为switch的判断条件
如果已经声明了small,则有以下用法

MyEnum myEnum = MyEnum.SMALL;
switch(myEnum){
    case SMALL: sys("it's small");
    break;
    case BIG: sys("it's big");
    break;
}

很显然将会输出it’s small

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值