java web 初始化数据_Java 静态数据初始化的示例代码

无论创建多少个对象,静态数据都只占用一份存储区域。static关键字不能应用于局部变量,因此它只能作用于域。如果一个域是静态的基本类型域,且也没有对它进行初始化,那么它就会获得基本类型的标准初始值;如果它是一个对象引用,那么它的默认初始值就是null

class Bowl {

public Bowl(int marker) {

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

}

void f1(int marker) {

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

}

}

class Table {

static Bowl bowl = new Bowl(1);

public Table() {

System.out.println("Table()");

bowl2.f1(1);

}

void f2(int marker) {

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

}

static Bowl bowl2 = new Bowl(2);

}

class Cupboard {

Bowl bowl3 = new Bowl(3);

static Bowl bowl4 = new Bowl(4);

public Cupboard() {

System.out.println("Cupboard()");

}

void f3(int marker) {

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

}

static Bowl bowl5 = new Bowl(5);

}

public class StaticInit {

public static void main(String[] args) {

//第三步

System.out.println("Creating new Cupboard in main");

//第四步

//因为Cupboard内的静态变量已经初始化完成,所以不再初始化(无论创建多少个对象,静态数据都是只占用一份存储区域)

//但是里边的类成员变量 bowl3 还是需要进行二次初始化的,因为你这是new对象,所以打印 Bowl(3)

//然后调用该对象的无参构造函数,打印 Cupboard()

new Cupboard();

//第五步

System.out.println("Creating new Cupboard in main");

//第六步

//和第四步一样,执行初始化,打印 Bowl(3),然后调用无参构造函数,打印 Cupboard()

new Cupboard();

//第七步

table.f2(111);

//第八步

cupboard.f3(111);

}

//Java 数据类型、对象引用 和 构造器 之间的初始化顺序 https://www.webkfz.com/d/file/202009161245751/20200916120845752.html

//第1步:

//先初始化静态代码块、

//Table 类中也含有静态引用变量,所以先去执行bowl引用指向的对象的创建,所以先打印 Bowl(1)

//然后该类中还有一个静态对象,所以立即去初始化这个静态对象,然后打印 Bowl(2)

//执行完成以后,正式创建对象,执行Table类的默认无参构造函数,打印 Table()

//构造函数内 又使用静态变量bowl2 调用了其对象内的方法,所以打印 f1(1)

//到此这一行代码执行的初始化全部执行完毕

static Table table = new Table();

//第2步:

//初始化 Cupboard 类,因为 Cupboard 类中也含有两个静态对象,所以依次执行 Bowl(4) 和 Bowl(5)

//在执行Cupboard构造函数之前先执行变量初始化的规则,所以 bowl3 先执行,打印 Bolw(3)

//然后执行无参构造函数,打印 Cupboard()

//到此,这行代码的初始化全部执行完毕

static Cupboard cupboard = new Cupboard();

}

执行结果:

Bowl(1)

Bowl(2)

Table()

f1(1)

Bowl(4)

Bowl(5)

Bowl(3)

Cupboard()

Creating new Cupboard in main

Bowl(3)

Cupboard()

Creating new Cupboard in main

Bowl(3)

Cupboard()

f2(111)

f3(111)

以上就是Java 静态数据初始化的示例代码的详细内容,更多关于Java 静态数据初始化的资料请关注WEB开发者其它相关文章!

扫描关注:"WEB开发者网“公众号,分享WEB开发知识,让开发变得更简单!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值