java 静态数据初始化
发布网友
发布时间:2022-05-13 09:42
我来回答
共4个回答
热心网友
时间:2023-10-05 06:05
从主类public class StaticInitialization 中的开始main函数开始。
在初始化对象时,开始 静态数据的初始化
譬如:
执行完
public class StaticInitialization {
public static void main(String[] args) {
System.out.println(
"Creating new Cupboard() in main");
后,然后
执行new Cupboard();这段代码
这时,程序就会跳到Cupboard这个类中,当实例化Cupboard这个类的对象的时候,Cupboard这个类的里面静态数据也同时被处理。
剩下的代码都一样。
热心网友
时间:2023-10-05 06:06
静态数据不用实例化就可以通过“类名.变量名”来使用
静态数据的初始化在第一次实例化类
或者第一次调用这个静态数据时被初始化,初始化以后。以后在实例化类。静态数据也不会在初始化了
热心网友
时间:2023-10-05 06:06
Bowl(1)
Bowl(2)
Table()
f(1)
Bowl(4)
Bowl(5)
Bowl(3)
Cupboard()
f(2)
Creating new Cupboard() in main
Bowl(3)
Cupboard()
f(2)
Creating new Cupboard() in main
Bowl(3)
Cupboard()
f(2)
f2(1)
f3(1)
热心网友
时间:2023-10-05 06:07
public class StaticInitialization {
public static void main(String[] args) {
System.out.println("Creating new Cupboard() in main");
new Cupboard();
System.out.println("Creating new Cupboard() in main");
new Cupboard();
t2.f2(1);
t3.f3(1);
}
static Table t2 = new Table();//1:标记位1
static Cupboard t3 = new Cupboard();//2 标记位2
} // /:~
/**
1:要执行main方法,必须先加载StaticInitialization,加载过程中,发现有静态变量t2,首先执行t2 = new Table()
new Table()需要实例化Table,必须先加载Table类
加载Table类的过程中,发现Table类也有静态变量,首先执行static Bowl b1 = new Bowl(1);过程和上面一样,要去创建Bow1
创建之前加载Bow1类,加载完毕,调用Bow1的构造方法,于是打印出“Bowl(1)” b1实例化(创建)完成
然后执行static Bowl b2 = new Bowl(2); 再次调用Bow1构造方法,打印“Bowl(2)”
这时候Table类加载完毕,开始实例化t2变量,调用Table类构造方法,打印“Table()” 执行b2.f(1); 打印“f(1)”
2:道理和上面1一样,只是在Cupboard中,static变量初始化完毕之后,还要去初始化一个非static变量
最后执行main中的方法,注意的是,此时Table,Cupboard 这2个类的加载过程已经完成,之后创建这2个类的实例的过程中,不再去初始化static变量
有其他问题在hi我
*/