初始化
初始化
1、 成员的初始化
1) 若方法的局部变量在方法中没有初始化,则会报编译错误
2) 若类的数据成员在类中没有初始化,则不会报错,在使用会默认初值。
如int默认为0;float,double默认为0.0;char默认为空(char的值为0,所以默认显示为空白);Boolean默认为false。
2、 构造器的初始化
2.1、 初始化顺序
变量定义的先后决定了初始化的顺序(变量这一级别来比较的),在构造器(或任何方法)之前得到初始化(针对变量与构造器来比较的)。
即 初始化优先级为 变量 > 构造器。
2.2、 静态数据的初始化
静态数据都只占用一份存储区域,无论创建多少个对象,也就是说静态数据在被第一次访问时或包含静态数据的对象在第一次被创建时静态数据才会初始化,此后,静态数据或静态对象不会再被初始化。
即:静态成员变量 > 普通成员变量 >构造器
2.3、 显式的静态初始化
当首次生成包含这个静态块的类的对象时,或者首次访问属于那个类的静态成员时进行初始化。(仅初始化一次) 。
2.4、 非静态实例初始化
实例初始化语句
Mug mug1;
Mug mug2;
{
mug1=new Mug(1);
mug2=new Mug(2);
}
与静态块一样,只不过少了static关键字,它可以保证无论调用了哪个显示的构造器,某些操作都会发生。
实例初始化语句 > 构造器
2.5、 数组初始化
int [] array ={1,2,3,4,5}
这种初始化等价于使用new,储存空间的分配将由编译器负责。对于数字和字符,数组里的值会默认初始化为0;对于boolean默认为false.