1. 开始吧!

今天,我们来探讨交流下静态变量初始化过程。Java虚拟机在类加载期间也同样遵循这个过程。

2. 初始化过程

在较高的层次上,JVM执行以下步骤:

首先,加载并链接类。然后,这个过程的“初始化”阶段处理静态变量初始化。最后,调用与类关联的main方法。在接下来的讨论中,我们来探索下类变量初始化。

3. 类变量

在Java中,静态变量也称为类变量。也就是说,它们属于一个类,而不是一个特定的实例。因此,类初始化的时候也将初始化静态变量相反,类的实例 初始化的时候也将初始化 实例变量(非静态变量)。类的所有实例共享该类的静态变量。以 StaticVariableDemo 类为例:public class StaticVariableDemo {

public static int i;

public static int j = 20;

public StaticVariableDemo() {}

}

First, the JVM creates a Class object for the class StaticVariableDemo. Next, the static field initializers assign a meaningful default value to the static fields. In our example above, the class variable i is first initialized with an int default value of zero.

首先,JVM为 StaticVariableDemo 类创建一个Class对象。接下来,static 修饰的字段将会被赋予一个有意义的默认值。在上面的例子中,类变量 i 首先使用用 int 的默认值0 来初始化。代码的书写顺序适用于静态字段初始化顺序。首先,i将初始化,然后j将被初始化。完成初始化之后,类及其静态成员将对其他类可见。

4. 静态块中的变量

再举一个例子:public class StaticVariableDemo {

public static int z;

static {

z = 30;

}

public StaticVariableDemo() {}

}

在这种情况下,变量初始化将按顺序进行。首先,JVM最初将默认的int值0赋给变量z。然后,在static块中,它被更改为30。

5. 静态嵌套类中的变量

最后,让我们以外部 StaticVariableDemo 类中的嵌套类为例:public class StaticVariableDemo {

public StaticVariableDemo() {}

static class Nested {

public static String nestedClassStaticVariable = "test";

}

}

在本例中,StaticVariableDemo 类加载 Nested 类。它将初始化静态变量 nestedClassStaticVariable。

6. 最后

在这篇短文中,我们简要地解释了静态变量初始化。

java中的static变量初始化_Java初始化静态变量的时间顺序相关推荐

  1. 面试季,Java中的static关键字解析

    点击上方"方志朋",选择"置顶或者星标" 你的关注意义重大! static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面 ...

  2. Java中的static关键字解析 转载

    原文链接:http://www.cnblogs.com/dolphin0520/p/3799052.html Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到 ...

  3. [转] Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  4. 【Java学习笔记之十五】Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  5. 深度理解Java中的static

    目录 一.static的用法: 使用: 1.修饰类的成员变量: 2.修饰类的成员方法: 3.修饰代码块:形成静态代码块以优化程序性能. 4.修饰内部类: 二.static的误区(问题思考) 1.sta ...

  6. Java中的static———静态变量

    引言 static 是 java 语言中的关键字,意思是"静态的",它可以用来修饰变量.方法.代码块等,修饰的变量叫做静态变量,修饰的方法叫做静态方法,修饰的代码块叫做静态代码块. ...

  7. java静态局部变量_java中成员变量,局部变量,静态变量的辨析

    转自百度:https://baijiahao.baidu.com/s?id=1625360816541592483&wfr=spider&for=pc 1.java中成员变量,局部变量 ...

  8. Java中的static变量

    关于static和非static变量的区别 1.如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类,多个对象共享同一份数据. 2.一旦使用static修饰成员方法 ...

  9. C\C++与Java中的static关键字

    C\C++里面的static: 面向过程的static: 在c和c++面向过程的设计里,在全局变量前加上static关键字则可将该变量定义为一个静态全局变量,比如: static int a; 那么c ...

最新文章

  1. python-Django-01基础配置
  2. 线扫相机——机器视觉中无限制物体的检测
  3. 计算机网络:大小端存储
  4. 无需Grouping,中科大和微软亚研院提出Group-Free的三维物体检测方法,性能远超之前最好方法。...
  5. .NET版Web后台快速开发框架 Coldairarrow
  6. vue中$router以及$route的使用
  7. 论文公式编号右对齐_如何编辑处理论文中的公式
  8. Jmeter全局变量设置
  9. mysql postgresql nav_Mysql/postgreSQL
  10. Android签名V1、V2、V3、V4汇总
  11. 《第一行代码》第三版之我的第一行Android代码(一)
  12. PS 画笔工具与文字工具
  13. 软件测试工程师需要掌握哪些技能呢?
  14. oracle logged on,ORA-01012:not logged on的解决办法
  15. ant design vue 中a-tree搜索查询
  16. mysql批量添加空行_MySQL加入空行
  17. 使用VMware安装CentOS
  18. CorelDRAW教程分享:绘制流程图简单方法分享
  19. python编程剪刀石头布思路_Python制作简单的剪刀石头布游戏
  20. 计算机应用软件开机自动启动设置,Win10系统添加/设置软件开机自动启动的方法...

热门文章

  1. Win10不能直接拖文件进行打开解决 办法
  2. 小兔子问题(斐波那契数列)
  3. mongodb 时间格式的转换
  4. 蚌埠2021高考成绩查询,2021蚌埠市地区高考成绩排名查询,蚌埠市高考各高中成绩喜报榜单...
  5. groupbyget group
  6. FPGA学习笔记(八):ASK调制解调的仿真
  7. linux查看内核数量命令
  8. linux rpm 卸载 java_linux下用rpm 安装卸载jdk
  9. 具有最佳性价比的Mac
  10. python教程-数据分析-matplotlib绘制折线图2 +总结(搭建网格,加上图例,修改图片的颜色和线条,脑图总结)