无论创建多少个对象,静态数据都只占用一份存储区域。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.sunjs.com/article/detail/debedcef327c4872933e0b2f1ac7cb71.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 静态数据初始化的资料请关注聚米学院其它相关文章!

java 静态初始化数据_Java 静态数据初始化的示例代码相关推荐

  1. java 乐观锁 实例_JAVA乐观锁实现-CAS(示例代码)

    是什么 全称compare and swap,一个CPU原子指令,在硬件层面实现的机制,体现了乐观锁的思想. JVM用C语言封装了汇编调用.Java的基础库中有很多类就是基于JNI调用C接口实现了多线 ...

  2. java printwriter 文件,java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr...

    java使用PrintWriter写文件,javaprintwriter写,下面示例代码演示使用Pr 下面示例代码演示使用PrintWriter方法写文件. PrintWriter的构造函数接受Fil ...

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

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

  4. java 静态初始化数据_Java静态数据初始化

    夯实Java基础的工作依旧在进行中,再记录些东西吧.Java基础本来就不够扎实,再加上一些知识大二时老师甚至没有讲到,温故知新. Java程序初始化的顺序是先进行静态对象的初始化,随后是"非 ...

  5. java初始化实例化_java类的初始化和实例化区别

    结论: 参考https://blog.csdn.net/qq_43672627/article/details/86616624 类的初始化:是完成程序执行前的准备工作.在这个阶段,静态的(变量,方法 ...

  6. java类初始化顺序_Java 类的初始化顺序

    静态代码块:用staitc声明,jvm加载类时执行,仅执行一次 构造代码块:类中直接用{}定义,每一次创建对象时执行 执行顺序优先级:静态块,main(),构造块,构造方法 1. 构造函数 publi ...

  7. java 静态变量声明_java静态变量怎么声明?

    展开全部 个人的总结 1 静态变量e69da5e6ba9062616964757a686964616f31333337616564只有一份被类的所有实例共享 2 静态变量的声明在编译时已经明确了内存的 ...

  8. java静态变量定义_java静态变量、静态方法和静态代码段

    先上实例 public classTestStatic {public static String staticString = "this is a static String" ...

  9. java类编来那个初始化顺序_java类的初始化顺序

    对于静态变量.静态初始化块.变量.初始化块.构造器,它们的初始化顺序依次是(静态变量.静态初始化块)>(变量.初始化块)>构造器.我们也可以通过下面的测试代码来验证这一点: public ...

最新文章

  1. javascript高级程序设计之引用类型
  2. c++基础_特殊回文数
  3. Python模块进阶、标准库、扩展库
  4. QualityCenter的备份
  5. codeblocks如何导入项目_T3如何利用系统工具导入导出复制存货档案
  6. Docker 持续推动创新,三款应用为您指引未来趋势
  7. 阿里云播放器Aliplayer-WEB走坑中
  8. 【学习笔记】用Mac自学虚幻4
  9. 中国石油大学《化工原理二》第一阶段在线作业
  10. AutoCAD2010激活闪退
  11. ios 常用的30个动画效果
  12. 云服务器和网站租用哪个好,自己购买服务器和租用云哪个好?
  13. Python str(float) 科学计数法
  14. Ubuntu20.04安装vscode打开出现花屏
  15. TM-30 计算软件 (Excel图表显示版本)
  16. 字符串操作,截取最后一个逗号
  17. 石头扫地机器人卡顿_小帅慢评 篇三:石头扫地机器人S50半年使用体验新品T65简评...
  18. 5 Mysql数据保护
  19. 完成一条微指令四周期英文全称
  20. IDEA配置JDK、Maven 常见错误总结

热门文章

  1. [JavaScriptC#]收藏 备忘
  2. 巧用 Nginx 快速实现 HTTPS 双向认证
  3. 在使用SVN,下载文件到本地时,一定要把全目录下载下来!
  4. MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法
  5. 单元测试中简单使用Mockito解决Spring Bean依赖树问题
  6. CentOS7 服务器连接超时自动断开问题解决
  7. Key ssd_300_vgg/block3_box/L2Normalization/gamma not found in checkpoint的解决方案
  8. Java 实现word 中写入文字图片的解决方案
  9. 关于centos启动报错:Failed to start Crash recovery kernel arming的解决方案
  10. 用python实现websocket请求遇到的问题及解决方法。