这里我们主要讨论下静态初始化块这种情况。

静态初始化块是在类被加载的时候就执行的一块程序,并且一直存在直到程序关闭。也就是说当程序被执行,即classloader将该java程序编译后的class文件加载后,就能执行到静态初始化块这段程序;当程序关闭,我的个人理解也就是java.exe进程被结束的时候,静态初始化块结束(例如在静态初始化块里对一个类的静态变量进行赋值,该变量一直存在到程序关闭)。

下面我们来举例说明:

public class Test {

//静态变量

public static String testStatic = "testStatic";

//静态初始化块

static {

System.out.println(testStatic);

System.out.println("Proc begin");

testStatic = "testProc";

System.out.println("Proc end");

}

//主方法

public static void main(String[] args) {

System.out.println(testProc);

System.out.println("main begin");

System.out.println("main end");

}

}

执行main方法输出结果:

testStatic
       Proc begin
       Proc end
       testProc
       main begin
       main end

也就是说当JVM将要执行main方法的时候,先要将Test.class加载到JVM中,此时就执行了静态初始化块中的程序;然后再执行执行main方法中的程序。这个例子没有将这个类实例化,所以没有用到构造函数。倘若需要实例化该类的时候,则构造方法的执行顺序也是在静态初始化块之后的。

最后我们可以得出这么一个结论:Java类的执行优先顺序

该类的静态变量->该类的静态初始化块->该类的构造方法

若存在父类的情况下则是:

父类的静态变量->父类的静态初始化块->子类的静态变量->子类的静态初始化块

关于Java的静态初始化块相关推荐

  1. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  2. 浅谈 JAVA中静态初始化块和非静态初始化块的区别

    众所周知在JAVA编程语言中有两种初始化块: 静态初始化块 非静态初始化块 他们到底有什么区别呢?今天就浅谈一下JAVA中静态初始化块和非静态初始化块的区别 静态初始化块 定义: static{} 执 ...

  3. java面向对象-------静态初始化块

    1.构造方法用于对象的初始化!静态初始化块,用于类的初始化操作,在静态初始化块中不能直接访问非static成员. package java面向对象; /** * 测试静态初始化块 */public c ...

  4. Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入

    static 关键字 在类中,用static声明的成员变量为静态成员变量,也称为类变量. 类变量的生命周期和类相同,在整个应用程序执行期间都有效.它有如下特点: 1. 为该类的公用变量,属于类,被该类 ...

  5. android 初始化类,Android 常用编程技巧/Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)...

    1.设置屏幕的亮度: WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.screenBrightness=1.0f; getW ...

  6. java中初始化块、静态初始化块和构造方法

    (所谓的初始化方法init()是另一回事, 在构造方法之后执行, 注意不要混淆) 在Java中,有两种初始化块:静态初始化块和非静态初始化块.它们都是定义在类中,用大括号{}括起来,静态代码块在大括号 ...

  7. java静态初始化块无法直接调用,关于JAVA静态初始化块,初始化块,构造器调用顺序的有关问题...

    关于JAVA静态初始化块,初始化块,构造器调用顺序的问题 一个简单的关于初始化块,静态初始化块,构造器的执行顺序的小例子,请大家参考: 父类如下: package test.jamin; /** * ...

  8. Java类的初始化顺序 (静态变量、静态初始化块、变量、初始...

    很有意思的一篇文章 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方法 2.有继承的情况 父类静态变量->父类静态初始化块->子类静态变量- ...

  9. java类的静态成员初始化_Java类的初始化顺序 (静态变量、静态初始化块、变量、初始......

    很有意思的一篇文章 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方法 2.有继承的情况 父类静态变量->父类静态初始化块->子类静态变量- ...

最新文章

  1. 为什么要选择html5,5分钟告诉你,为什么要学HTML5大前端
  2. UVA11817 Tunnelling the Earth(计算几何、经纬度转空间坐标、球面距离)
  3. 为什么要学习响应式设计
  4. 在当前进程下取得当前登陆用户
  5. 012_Switch开关
  6. ExtJs组件之间的相互访问,访问机制
  7. Storyboard的简单使用
  8. c语言条件判断!,if条件判断语句,谁能帮我分析一下?
  9. H3C 模拟器 pc与sw直连 开启telnet
  10. java 重定向到某个页面并弹出消息_前端面试100问之浏览器从输入URL到页面展示发生了什么...
  11. oracle数据库激活控制文件位置,Oracle数据库之Oracle 重建控制文件一例
  12. 分享一个嘉立创封装库(内含AD和PADS两种格式)
  13. 《算法第四版》环境搭建
  14. 汽车工程大专业细分学科类别小探
  15. figure字体 latex_Latex字体大小和样式
  16. unity之小地图和聊天室
  17. Arango db 快速入门
  18. OutMan——Foundation框架中的NSString类和NSMutableString类
  19. Android Room的使用
  20. 11月,匆匆而过,留下了遗憾(亚洲赛广州站)

热门文章

  1. 模态对话框与非模态对话框的区别
  2. 前端输入框错误提示_WEB/APP开发基础之旅--前端、服务器端、数据库综合开发案例...
  3. 注册机patch起什么作用_单相电机的运行电容起什么作用
  4. java this.val$_[Java教程]Jquery $(this).attr和$(this).val用法示例
  5. c java http通讯,c语言经过http请求javaee项目
  6. 为什么金融分析需要应用python语言_python入门第一篇:python语言简介
  7. vertica 数据库 linux,配置访问列式数据库vertica的php环境
  8. SQLmap常用命令/使用教程
  9. 7 ida pro 网盘_IDA分析iOS网络协议
  10. ai音响怎么连接网络_KTV音响设备怎么连接?点歌机怎么连接?学习下