读书人

Java中的初始化有关问题

发布时间: 2012-08-24 10:00:21 作者: rapoo

Java中的初始化问题

1. 类的属性初始化

Java虚拟机会自动进行初始化。如果给出了初始值,则初始化为该初始值。如果没有给出,则把它初始化为该类型变量的默认初始值。

(1)int类型变量默认初始值为0

(2)float类型变量默认初始值为0.0f

(3)double类型变量默认初始值为0.0

(4)boolean类型变量默认初始值为false

(5)char类型变量默认初始值为0(ASCII码)

(6)long类型变量默认初始值为0

?

所有对象引用类型变量默认初始值为null,即不指向任何对象,包括数组等。

?

对于两种不对的类属性,static属性与instance属性,初始化的时机是不同的:

(1)instance属性在创建实例的时候初始化,static属性在类加载,也就是第一次用到这个类的时候初始化,对于后来的实例的创建,不再次进行初始化。

?

2. 方法里的局部变量

(1)必须明确地进行初始化;

(2)如果在没有初始化之前就试图使用它,编译器会抗议;

(3)如果初始化的语句在try块中或if块中,也必须要让它在第一次使用前一定能够得到赋值。

?

3. 类初始化时构造函数调用顺序

(1)初始化对象的存储空间为零或null值;

(2)调用父类构造函数;

(3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;

(4)调用本身构造函数

?

4. 类初始化时的其他问题(1)如果java文件没有package,就默认给文件加上“无名”package;(2)默认导入java.lang包,所以我们的java程序中可以使用String,Math,Integer等类,包括一些异常类;(3)如果生成的类没有父类,则为这个类隐式加上父类Object,因此,包括Object中的许多方法都可以使用;(4)运行顺序建立一个非主类对象,顺序为:静态初始化块static{} -> 初始化块{} -> 构造函数constructor
牵涉到父类:父类静态初始化块 -> 子类静态初始化块 -> 父类初始化块 -> 父类构造函数 -> 子类初始化块 -> 子类构造函数注意:初始化块和构造函数是接连运行的,不会父类子类交替。





读书人网 >编程

热点推荐