关于Java的静态初始化块
这里我们主要讨论下静态初始化块这种情况。
静态初始化块是在类被加载的时候就执行的一块程序,并且一直存在直到程序关闭。也就是说当程序被执行,即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的静态初始化块相关推荐
- java 静态块初始化_简单了解java中静态初始化块的执行顺序
这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...
- 浅谈 JAVA中静态初始化块和非静态初始化块的区别
众所周知在JAVA编程语言中有两种初始化块: 静态初始化块 非静态初始化块 他们到底有什么区别呢?今天就浅谈一下JAVA中静态初始化块和非静态初始化块的区别 静态初始化块 定义: static{} 执 ...
- java面向对象-------静态初始化块
1.构造方法用于对象的初始化!静态初始化块,用于类的初始化操作,在静态初始化块中不能直接访问非static成员. package java面向对象; /** * 测试静态初始化块 */public c ...
- Java的知识点10——static关键字、静态初始化块、 参数传值机制、包、导入类import、 静态导入
static 关键字 在类中,用static声明的成员变量为静态成员变量,也称为类变量. 类变量的生命周期和类相同,在整个应用程序执行期间都有效.它有如下特点: 1. 为该类的公用变量,属于类,被该类 ...
- android 初始化类,Android 常用编程技巧/Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)...
1.设置屏幕的亮度: WindowManager.LayoutParams lp=getWindow().getAttributes(); lp.screenBrightness=1.0f; getW ...
- java中初始化块、静态初始化块和构造方法
(所谓的初始化方法init()是另一回事, 在构造方法之后执行, 注意不要混淆) 在Java中,有两种初始化块:静态初始化块和非静态初始化块.它们都是定义在类中,用大括号{}括起来,静态代码块在大括号 ...
- java静态初始化块无法直接调用,关于JAVA静态初始化块,初始化块,构造器调用顺序的有关问题...
关于JAVA静态初始化块,初始化块,构造器调用顺序的问题 一个简单的关于初始化块,静态初始化块,构造器的执行顺序的小例子,请大家参考: 父类如下: package test.jamin; /** * ...
- Java类的初始化顺序 (静态变量、静态初始化块、变量、初始...
很有意思的一篇文章 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方法 2.有继承的情况 父类静态变量->父类静态初始化块->子类静态变量- ...
- java类的静态成员初始化_Java类的初始化顺序 (静态变量、静态初始化块、变量、初始......
很有意思的一篇文章 1.没有继承 静态变量->静态初始化块->变量->变量初始化块->构造方法 2.有继承的情况 父类静态变量->父类静态初始化块->子类静态变量- ...
最新文章
- 为什么要选择html5,5分钟告诉你,为什么要学HTML5大前端
- UVA11817 Tunnelling the Earth(计算几何、经纬度转空间坐标、球面距离)
- 为什么要学习响应式设计
- 在当前进程下取得当前登陆用户
- 012_Switch开关
- ExtJs组件之间的相互访问,访问机制
- Storyboard的简单使用
- c语言条件判断!,if条件判断语句,谁能帮我分析一下?
- H3C 模拟器 pc与sw直连 开启telnet
- java 重定向到某个页面并弹出消息_前端面试100问之浏览器从输入URL到页面展示发生了什么...
- oracle数据库激活控制文件位置,Oracle数据库之Oracle 重建控制文件一例
- 分享一个嘉立创封装库(内含AD和PADS两种格式)
- 《算法第四版》环境搭建
- 汽车工程大专业细分学科类别小探
- figure字体 latex_Latex字体大小和样式
- unity之小地图和聊天室
- Arango db 快速入门
- OutMan——Foundation框架中的NSString类和NSMutableString类
- Android Room的使用
- 11月,匆匆而过,留下了遗憾(亚洲赛广州站)
热门文章
- 模态对话框与非模态对话框的区别
- 前端输入框错误提示_WEB/APP开发基础之旅--前端、服务器端、数据库综合开发案例...
- 注册机patch起什么作用_单相电机的运行电容起什么作用
- java this.val$_[Java教程]Jquery $(this).attr和$(this).val用法示例
- c java http通讯,c语言经过http请求javaee项目
- 为什么金融分析需要应用python语言_python入门第一篇:python语言简介
- vertica 数据库 linux,配置访问列式数据库vertica的php环境
- SQLmap常用命令/使用教程
- 7 ida pro 网盘_IDA分析iOS网络协议
- ai音响怎么连接网络_KTV音响设备怎么连接?点歌机怎么连接?学习下