-
Static
数据的初始化
(
注意结合代码调试理解
)< br>:
package
class Bowl {
Bowl(){
n(
}
Bowl(int marker) {
n(
}
static Bowl b6 = new Bowl(6);
static Bowl b9 = new Bowl();
void f(int marker) {
n(
}
}
class Table {
static Bowl b1 = new Bowl(1);
Table() {
n(
b2.f(1);
}
void f2(int marker) {
n(
}
static Bowl b2 = new Bowl(2);
}
class Cupboard {
Bowl b3 = new Bowl(3);
Bowl b10 = new Bowl();
static Bowl b4 = new Bowl(4);
Cupboard() {
n(
b4.f(2);
}
void f3(int marker) {
n(
}
static Bowl b5 = new Bowl(5);
}
public class StaticInitialization {
//static Bowl b7 = new
Bowl(7); //----------(1)
public static void main(String[] args) {
n(
new Cupboard();
n(
new Cupboard();
//t2.f2(1); //--------------(2)
//t3.f3(1);
//---------------(3)
}
//static Bowl b8 = new Bowl(8);
//----------------(4)
//static Table t2 = new Table();
//----------------(5)
//static Cupboard t3 = new Cupboard();
//---------(6)
} ///:~
调试以上代码,总结出以下结论:
一、初始化的过程:总体来说顺序为:
s tatic
初始化
->
非
static
初
始化
->
执行构造函数;
二、代码分析一:对现有代码执行结果如下:
Creating new Cupboard() in main
Bowl(6)
Bowl(9)
Bowl(4)
Bowl(5)
Bowl(3)
Bowl(9)
Cupboard()
f(2)
Creating new Cupboard() in main
Bowl(3)
Bowl(9)
Cupboard()
f(2)
执行过程:
1
、
java
解释器寻找
public class
类,加载
StaticInitialization
类;
2
、寻找
StaticInitialization
类中的
static
定义代码段;这
里因为
(1)
、
(4)
、
(5)
、
(6)
均加了注释,
所以
St aticInitialization
中
没有
static
需要初始化
;
3
、进入
main
函数中执行代码输出
Creating new
Cupboard() in main
;
4
、继续执行
new Cupboard();
,注意初始化的顺序是
static
初始化
->
非
static
初始化
->执行构造函数;
所以加载类
-
-
-
-
-
-
-
-
本文更新与1970-01-01 08:00,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/553628.html
-
上一篇:没有了
下一篇:没有了