java 记录一个类加载顺序的坑
看看这个,先想想结果打印的顺序和a、b的值
public class ClassLoderTest {public static void main(String[] args) {staticFun();}static ClassLoderTest clt = new ClassLoderTest();static {System.out.println(1);}{System.out.println(2);}ClassLoderTest(){System.out.println(3);System.out.println("a="+a);System.out.println("b="+b);}public static void staticFun(){System.out.println(4);}int a = 11;static int b = 12;
}
如果有人想的答案是以打印1开头,或者b=12的,就都错了
正确答案:
2
3
a=11
b=0
1
4
原因:
就是先静态初始化本类实例,那么后面的静态初始化都会等到这个实例化完成才会执行。
详细过程是这样的:
1、调用main方法,触发类的静态初始化
2、第一个静态变量是ClassLoderTest类本身,于是就执行new ClassLoderTest()初始化
3、由于这个没执行完,后面的静态代码块和静态变量就先等等
4、既然是类的初始化,那就先执行普通代码块,打印出2
5、再初始化成员变量,a=11,但b因为是静态变量,并没有赋值,所以这时b=0
6、再执行构造方法,打印出3,a=11,b=0,此时类初始化完成
7、这时才执行后面的静态初始化,于是执行到静态代码块,打印出1
8、再初始化静态变量b,此时b=12
9、所有初始化都完成,最后再调用main方法中的静态方法,打印出4
java 记录一个类加载顺序的坑相关推荐
- 记录一个C++多线程的坑
记录一个C++多线程的坑 VS2019报错 解决方案: 错误代码 修改方案: 写在最后,发牢骚 VS2019报错 1>C:\Program Files (x86)\Microsoft Visua ...
- JAVA静态内部类加载顺序
今天偶然机会碰到了JAVA的静态内部类加载实例,原本以为和外部类一样,但实验结果确出人意料,特此记录.希望大牛们能指出原因所在. 首先给上代码: public class LoadTest2 {pub ...
- java命令行参数_一个 java 命令行参数顺序的坑
tream Stream是在Java SE 8 API添加的用于增强集合的操作接口,可以让你以一种声明的方式处理集合数据.将要处理的集合看作一种流的创建者,将集合内部的元素转换为流并且在管道中传输, ...
- Parcelable的用法及记录一个Parcelable遇到的坑
大家都知道2个Act之前传递对象数据,一般就是用Serializable或者Parcelable了,好处我就不说了,肯定是Parcelable好用就对了 先看下数据对象 public class Pe ...
- android 定时器 坑,Android 记录一个使用AlarmManager的坑。
正常使用的代码是这样的: private void createAlarm(String message, int hour, int minutes){ AlarmManager alarmMana ...
- java的父子类加载顺序
若有不正之处,请多多批评并指教. 先上代码: 父类的代码: public abstract class ABSclass {private static int b=3;static{int s=8; ...
- 记录一个自己挖的坑~
这个是在AC_DOCUMENT里做了调整. 后来一个程序批到的时候发现,抬头文本丢了. 然后我就开始debug看了看,发现是这个增强里影响了. 然后就 顺手加了两句话 过了几天,发现了个尴尬的问题.如 ...
- 用Java Instrumentation 在类加载时添加记录
用Java Instrumentation 在类加载时添加记录 发布者:xanadu0214 来源:网络转载 发布日期:2013年11月06日 Java学习交流群:471651004 在分 ...
- Java类的加载及父类子类加载顺序
点击 Mr.绵羊的知识星球 解锁更多优质文章. 目录 一.类的加载 1. 类加载 2. 类加载器 二.父类和子类加载顺序 1. 案例(代码) 一.类的加载 1. 类加载 当程序要使用某些类时,如果该类 ...
最新文章
- C++关键字union
- undefined reference to 'pthread_mutex_trylock'
- [NOIP 2011普及组 No.4] 表达式的值
- BIOS INT 10-13功能调用的“另类”玩法
- 20165313 《Java程序设计》第七周学习总结
- ASP.NET Core+Quartz.Net实现web定时任务
- Java包装类、装箱和拆箱
- 国内最强算法推荐系统,百度第二,它排第一!
- Python:anaconda3/bin/activate: Permission denied
- 04SpringMvc_映射器_BeanNameUrlHanderMapping
- 让极路由给支持WDS的路由器无线桥接教程
- 《机器学习Python实践》第7章——数据可视化
- uva 10330(最大流)
- 【ProCAST】铸件定向凝固仿真流程学习总结
- 批量获取中国所有行政区域经边界纬度坐标(到县区级别)
- MeshLab源码阅读笔记
- cecore.cls.php 08cms,08CMS产品库报价系统 v1.1 utf8版PHP CMS源码下载-华软网
- DNS服务器存在问题需要修复,dns服务(dns异常怎么都修复不了)
- socket.io实现聊天功能——第一章 、群聊
- 情侣的网站代码java_java版给爱人表白祝福的小项目