博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
代码逻辑题之继承-静态代码块-main方法执行顺序
阅读量:6707 次
发布时间:2019-06-25

本文共 2195 字,大约阅读时间需要 7 分钟。

前提知识:

  

  

  

  

总结: 

JVM加载类的执行顺序 先父后子  类变量(static成员变量)-->静态代码块-->main函数  将构造函数加载栈中- ->加载成员变量/代码块--调用构造函数并返回

public class ParentMainTest {

  static int x;
  static {
    x++;
    System.out.println("ParentMainTest_static_x:" + x);
  }
  public static void main(String[] args) {
    new SonMainTest(8);
  }
  int n = 10;
  {
    n++;
    System.out.println("ParentMainTest_nostatic_n:" + n);
  }
}

 

public class SonMainTest extends ParentMainTest{

  SonMainTest(int a){
    this.a=a;
    System.out.println("SonMainTest.a=" + a );
  }
  int a;
  {
    System.out.println("SonMainTest_nostatic_a:"+this.a);
  }
  static{
    x++;
    System.out.println("SonMainTest_static..." +x);
  }
}

输出结果:ParentMainTest_static_x:1SonMainTest_static...2ParentMainTest_nostatic_n:11SonMainTest_nostatic_a:0SonMainTest.a=8JVM加载类的执行顺序 先父后子  类变量(static成员变量)-->静态代码块-->main函数  将构造函数加载栈中- ->加载成员变量/代码块--调用构造函数并返回//step0 JVM装载对应的.class字节码文件public class ParentMainTest {    static int x; //step1:初始化类变量   x默认值int类型为0,Integer为null    static {  //step2:初始化静态代码块         x++;//step2.1 x自增 x值为1        System.out.println("ParentMainTest_static_x:" + x);//step2.2 输出ParentMainTest_static...1    }    public static void main(String[] args) {
//step3:执行main函数 new SonMainTest(8);//step4:将SonMainTest.class加载的jvm,通过构造函数初始化SonMainTest对象 } int n = 10; //step10: 构造函数加载实例成员变量 { //step11: 构造函数加载实例成员代码块 n++; //step11.1 n=11; System.out.println("ParentMainTest_nostatic_n:" + n); step11.2 输出ParentMainTest_nostatic_n:11 }}public class SonMainTest extends ParentMainTest{` SonMainTest(int a){ //step8:执行new SonMainTest构造函数 //默认调用父类的无参构造函数 super(); step9:加载实例成员变量与成员代码块 this.a=a; //step14:将实例变量赋值 a=8 System.out.println("SonMainTest.a=" + this.a ); //step15:输出SonMainTest.a=8 } int a; //step12:加载实例变量 默认值为0; { System.out.println("SonMainTest_nostatic_a:"+this.a); //step13:加载成员代码块 输出SonMainTest_nostatic_a:0 } static{ //step5: 无类变量加载,加载静态代码块 x++; //step6: 获得父类的类变量值x=1,自增 x=2; System.out.println("SonMainTest_static..." +x);//step7: 输出SonMainTest_static...2 }}
答案及解析

 

转载于:https://www.cnblogs.com/qq1452753919/p/10556081.html

你可能感兴趣的文章
转贴:压缩传感(Compressed sensing)
查看>>
excel如何提取单元格中的数字
查看>>
云时代架构阅读笔记之六
查看>>
千里之行,始于足下
查看>>
分库分表技术演进暨最佳实践
查看>>
jQuery圆盘抽奖
查看>>
[POJ 1321] 棋盘问题(DFS)
查看>>
mybatis 中 foreach collection的三种用法
查看>>
【问题解决】java中为什么不建议使用DataInputStream 的readLine()方法
查看>>
渗透测试之web漏洞分析——预习dwva靶机系统
查看>>
JS去除空格和换行的正则表达式(推荐)
查看>>
AC自动机
查看>>
数组根据index拆分和查询下标
查看>>
EasyUI表格columns单元格正确显示时间格式
查看>>
字体描边 终极版
查看>>
canvas元素简易教程(10)(转自火狐,自己只写了简单的代码分析)
查看>>
Scala下划线_使用
查看>>
2018-2019-1 20165324 《信息安全系统设计基础》第三周 缓冲区溢出漏洞实验
查看>>
centos 7.3二进制安装mariadb10.2.8完美步骤
查看>>
Mysql实现企业级日志管理、备份与恢复实战
查看>>