无论创建多少个对象,静态数据都只占用一份存储区域。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 静态数据初始化的示例代码

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

  2. Java Singleton类中的线程安全性的示例代码

    Java Singleton类中的线程安全性的示例代码 Singleton是最广泛使用的创建设计模式之一,用于限制应用程序创建对象.在实际应用程序中,数据库连接或企业信息系统(EIS)等资源是有限的, ...

  3. 纯java pdf转换成html,JAVA实现PDF转HTML文档的示例代码

    本文是基于PDF文档转PNG图片,然后进行图片拼接,拼接后的图片转为base64字符串,然后拼接html文档写入html文件实现PDF文档转HTML文档. 引入Maven依赖 org.apache.p ...

  4. java实例属性_Java 静态属性与实例属性的初始化

    类的初始化包括静态属性的初始化和实例属性的初始化,在加载类过程中的准备阶段会给静态属性分配存储空间,并根据属性的类型设置初始值,例如 int 类型静态属性会设置初始值为 0,布尔类型静态属性会设置初始 ...

  5. java 释放静态变量_java静态变量

    静态static 静态出现最大的原因:节约内存,只存一份,由对象共享这个属性. 静态的作用是什么? 场景: 当每个对象都有一个相同的属性,如country="China",那么每个 ...

  6. java 批量处理_Java模拟数据量过大时批量处理数据的两种实现方法

    方法一: 代码如下: import java.util.ArrayList; import java.util.List; /** * 模拟批量处理数据(一) * 当数据量过大过多导致超时等问题可以将 ...

  7. java设置excel单元格格式为百分比_Java 设置Excel条件格式示例代码(高亮条件值、应用单元格值/公式/数据条等类型)...

    概述 在Excel中,应用条件格式功能可以在很大程度上改进表格的设计和可读性,用户可以指定单个或者多个单元格区域应用一种或者多种条件格式.本篇文章,将通过Java程序示例介绍条件格式的设置方法,设置条 ...

  8. 大数据开发和java的前景_Java大数据开发前景好吗?

    在IT职业领域,Java一直以来都是占据着非常重要的位置的,而在进入大数据时代之后,Java也再次获得了更好的发展方向.在大数据应用开发当中,Java是重要的编程语言,学大数据需要Java基础.今天我 ...

  9. java 大批量数据比对_java大量数据对比

    如题,根据业务需求需要经行数据对比,对比数据是否缺失,存在.可以通过java 中set 集合来进行判断,前提是对比的数据必须要求是唯一的. 逻辑:循环把数据存放入set集合,在循环需要对比的数据,通过 ...

最新文章

  1. R语言构建xgboost模型:使用xgboost的第一颗树(前N颗树)进行预测推理或者使用全部树进行预测推理、比较误分类率指标
  2. 实验测试2SK241的g-s击穿电压
  3. 超长整数相加 c语言类,二个超长正整数的相加
  4. oracle 长事务 逻辑日志,goldengate中长事务引起的问题
  5. 环信SDK 踩坑记webIM篇(一)
  6. 日期和毫秒值 例子
  7. 马云妇女节寄语女性:没有败家的女人 只有爱家的女人
  8. thinkphp数据表操作恐怖事件。
  9. WPF的DataGrid的某个列绑定数据的三种方法(Binding、Converter、DataTrigger)
  10. 《算法设计与分析基础》第2版
  11. QT5.12安装图文教程与安装成功后环境配置详细教程
  12. 51单片机波特率计算的公式和方法
  13. wifi连接一段时间才能上网_家里的WiFi老是突然断网,WiFi还是连着的,但是关WiFi又连不上去,必须重启路由器才能上网...
  14. IOS swift开发——获取设备定位信息
  15. 智课雅思词汇---二十七、形容词后缀-ant/-ent
  16. doris 动态分区
  17. 兄弟连PHP学习套装,2010年限期促销!
  18. 用于私网的IP地址段
  19. 【单片机基础】单片机的时序概念
  20. 二维标准Kalman滤波

热门文章

  1. ASP.NET MVC5+EF6+EasyUI 后台管理系统(46)-工作流设计-设计分支
  2. 《JavaScript快速全栈开发》作者Azat Mardanov:现在是拥抱Node技术栈的最佳时机
  3. C#设计模式系列:访问者模式(Visitor)
  4. linux 进程优先级 之设置实时进程 (另一种方式是设置nice值)【转】
  5. 3.Linux 文件的压缩与打包
  6. Android学习——基础组件
  7. XYPieChart
  8. vim中实现CSS、HTML代码自动完成功能
  9. VS2008 各种杂七杂八技巧
  10. Web 2.0技术对SEO的影响