java静态数据与非静态数据的初始化

静态数据

 


 

 

 

打印结果

 

 

StaticInitialization执行的时候,首先会加载

static Table table = new Table();

static Cupboard cupboard = new Cupboard();

当执行new Table()的时候,他就会执行static Bowl bowl1 = new Bowl(1);

就会调用BOwl的构造方法,

Bowl(int marker){

System.out.println("BOwl"+marker);

}打印出BOwl1

然后继续调用static Bowl bowl2 = new Bowl(2);

打印出BOwl2,执行完Table类里面的静态方法后,由于是new Table,所以他就会执行Table类的构造方法,打印出Tablef11

以上这些是执行StaticInitialization里面的静态数据

static Table table = new Table();

接下来会执行static Cupboard cupboard = new Cupboard();

就会调用static Bowl bowl4 = new Bowl(4);

打印出BOwl4

在执行static Bowl bowl5 = new Bowl(5);

打印出BOwl5

然后在调用非静态数据,Bowl bowl3 = new Bowl(3);

打印出BOwl3

其次才执行Cupboard类的构造方法

打印出Cupboardfl2

 

当初始化完StaticInitialization的静态数据后,才会执行他的main方法

打印出Createing new Cupbord() in main

Mian方法里面有new Cupboard();

由于Cupboard里面的静态数据已经加载过了,已经放进了静态数据的内存区域,重新new Cupboard的时候将不会再次加载,但由于Bowl bowl3 = new Bowl(3);是非静态数据,将会再次被加载,所以打印出BOwl3,在往下执行,调用Cupboard的构造方法,打印出Cupboard f12

然后再执行StaticInitializationSystem.out.println("Createing new Cupbord() in main");

new Cupboard();这两行代码,

依次打印出Createing new Cupbord() in main

BOwl3

Cupboard

f12

 

 

 

 

静态数据与非静态数据

 



打印结果

 

由于ExplicitStatic没有静态数据和常量,那就直接执行Main方法

打印出Inside main()

接下来执行Cups.cup1.f(99);

将会加载Cups里面的

 

就会打印出CUp1  Cup2

由于不是实例化(new),所以就没有执行构造方法,打印出f99

---------------------------------------------------------------------------------------------------------------------------------

 

 

非静态数据

 

 

 

打印结果

 

 

由于Mugs类里面没有静态数据,所以将会直接执行Main方法

打印出Inside,执行new Mugs();接下来将会执行常量,

Mug mug1;

Mug mug2;

{

mug1 = new Mug(1);

mug2 = new Mug(2);

System.out.println("mug1 & mug2");

}

打印出Mug1   Mug2    mug1 & mug2

 

然后再执行构造方法,打印出Mugs()再执行System.out.println("new Mugs()");

 

再执行new Mugs(1);再次依照new Mugs();一样,执行下去

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值