我的位置: 首页 > 学习专区 > JAVA技术 > Java基础之初始化(2)

Java基础之初始化(2)

2016-02-16 12:24:54
来源:
[导读] 前面一篇讲到了对象创建过程、初始化相关函数,并介绍了默认初始化值,这篇文章我们继续讲解Java基础初始化的相关内容。四、初始化方法在定义类成员变量的地方为其赋值。例如:char ch=’x’;byte b=47;Depth d=new Depth(); 如果没有为d指定初始值就尝试使用它,就会
前面一篇讲到了对象创建过程、初始化相关函数,并介绍了默认初始化值,这篇文章我们继续讲解Java基础初始化的相关内容。
四、初始化方法
在定义类成员变量的地方为其赋值。
例如:char ch=’x’;
byte b=47;
Depth d=new Depth();//如果没有为d指定初始值就尝试使用它,就会出现运行时错误。
通过调用某个方法来提供初值:
例如:
public class MethodInit{
int i=f();
int f(){
Return 11;
}
}
构造器初始化:
public class Counter{
int i;
Counter(){
i=7;
}
}
利用static块进行初始化:
static{
......
}
五、初始化顺序:
无继承情况的初始化顺序:
静态块和静态数据按定义的先后顺序进行初始化。
普通成员初始化。
构造函数。
有继承情况的初始化顺序:
父类的静态块和静态数据按定义的先后顺序进行初始化。
子类的静态块和静态数据按定义的先后顺序进行初始化。
父类的普通成员初始化。
父类的构造函数。
子类的普通成员初始化。
子类的构造函数。
Static关键字不能应用于局部变量,只能作用于域,如果一个域是静态的基本类型域且没有对它进行初始化那么它就会获得基本类型的标准初值,如果是一个对象的引用那么它的默认初始化值就是null。
静态初始化只有在必要时刻才会进行,当首次生成这个类的一个对象时,或者访问属于那个类的静态数据成员时,才开始初始化。并且静态初始化动作仅执行一次。
无继承的初始化顺序,代码验证:
输出如下所示:
1、静态成员变量初始化
2、执行static块:
静态块变量初始化
3、普通成员变量初始化
4、构造函数被调用
5、执行成员方法
3、普通成员变量初始化
4、构造函数被调用
5、静态变量初始化只执行一次
有继承的初始化顺序代码验证:
输出结果如下所示:
1、父类静态成员变量初始化
2、执行父类static块:
父类静态块变量初始化
3、执行子类static块:
子类静态块变量初始化
4、子类静态成员变量初始化
5、父类普通成员变量初始化
6、父类构造函数被调用
7、子类普通成员变量初始化
8、子类构造函数被调用
9、调用成员方法
5、父类普通成员变量初始化
6、父类构造函数被调用
7、子类普通成员变量初始化
8、子类构造函数被调用
评论
热点专题
>>