看看这个,先想想结果打印的顺序和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 记录一个类加载顺序的坑相关推荐

  1. 记录一个C++多线程的坑

    记录一个C++多线程的坑 VS2019报错 解决方案: 错误代码 修改方案: 写在最后,发牢骚 VS2019报错 1>C:\Program Files (x86)\Microsoft Visua ...

  2. JAVA静态内部类加载顺序

    今天偶然机会碰到了JAVA的静态内部类加载实例,原本以为和外部类一样,但实验结果确出人意料,特此记录.希望大牛们能指出原因所在. 首先给上代码: public class LoadTest2 {pub ...

  3. java命令行参数_一个 java 命令行参数顺序的坑

    tream Stream是在Java SE 8 API添加的用于增强集合的操作接口,可以让你以一种声明的方式处理集合数据.将要处理的集合看作一种流的创建者,将集合内部的元素转换为流并且在管道中传输, ...

  4. Parcelable的用法及记录一个Parcelable遇到的坑

    大家都知道2个Act之前传递对象数据,一般就是用Serializable或者Parcelable了,好处我就不说了,肯定是Parcelable好用就对了 先看下数据对象 public class Pe ...

  5. android 定时器 坑,Android 记录一个使用AlarmManager的坑。

    正常使用的代码是这样的: private void createAlarm(String message, int hour, int minutes){ AlarmManager alarmMana ...

  6. java的父子类加载顺序

    若有不正之处,请多多批评并指教. 先上代码: 父类的代码: public abstract class ABSclass {private static int b=3;static{int s=8; ...

  7. 记录一个自己挖的坑~

    这个是在AC_DOCUMENT里做了调整. 后来一个程序批到的时候发现,抬头文本丢了. 然后我就开始debug看了看,发现是这个增强里影响了. 然后就 顺手加了两句话 过了几天,发现了个尴尬的问题.如 ...

  8. 用Java Instrumentation 在类加载时添加记录

    用Java Instrumentation 在类加载时添加记录 发布者:xanadu0214   来源:网络转载   发布日期:2013年11月06日   Java学习交流群:471651004 在分 ...

  9. Java类的加载及父类子类加载顺序

    点击 Mr.绵羊的知识星球 解锁更多优质文章. 目录 一.类的加载 1. 类加载 2. 类加载器 二.父类和子类加载顺序 1. 案例(代码) 一.类的加载 1. 类加载 当程序要使用某些类时,如果该类 ...

最新文章

  1. C++关键字union
  2. undefined reference to 'pthread_mutex_trylock'
  3. [NOIP 2011普及组 No.4] 表达式的值
  4. BIOS INT 10-13功能调用的“另类”玩法
  5. 20165313 《Java程序设计》第七周学习总结
  6. ASP.NET Core+Quartz.Net实现web定时任务
  7. Java包装类、装箱和拆箱
  8. 国内最强算法推荐系统,百度第二,它排第一!
  9. Python:anaconda3/bin/activate: Permission denied
  10. 04SpringMvc_映射器_BeanNameUrlHanderMapping
  11. 让极路由给支持WDS的路由器无线桥接教程
  12. 《机器学习Python实践》第7章——数据可视化
  13. uva 10330(最大流)
  14. 【ProCAST】铸件定向凝固仿真流程学习总结
  15. 批量获取中国所有行政区域经边界纬度坐标(到县区级别)
  16. MeshLab源码阅读笔记
  17. cecore.cls.php 08cms,08CMS产品库报价系统 v1.1 utf8版PHP CMS源码下载-华软网
  18. DNS服务器存在问题需要修复,dns服务(dns异常怎么都修复不了)
  19. socket.io实现聊天功能——第一章 、群聊
  20. 情侣的网站代码java_java版给爱人表白祝福的小项目

热门文章

  1. Python总结:保留小数点任意位round函数不够精确
  2. [转帖]Oracle 11G RAC For Windows 2008 R2部署手册
  3. 设计模式系列 - 原型模式
  4. 第七章:集成学习(利用AdaBoost元算法...)
  5. django模板系统(上)
  6. CORS预检请求详谈
  7. tools URL 收集
  8. 【HTML5】Server-Sent服务器发送事件
  9. 渲染上下文Rendering Context
  10. (转)Some awareness before migrating from x86 to x64