本文讨论Java中(静态)变量、(静态)代码块的执行顺序

首先创建3个类:

1、Foo类,用于打印变量

public class Foo {

public Foo(String word) {

System.out.println(word);

}

}

2、Parent类

public class Parent {

static Foo FOO = new Foo("Parent's static parameter");

Foo foo = new Foo("Parent's parameter");

static {

System.out.println("Parent's static code block");

}

{

System.out.println("Parent's code block");

}

public Parent() {

System.out.println("Parent.Parent()");

}

}

3、Child类

public class Child extends Parent{

static Foo FOO = new Foo("Child's static parameter");

Foo foo = new Foo("Child's parameter");

static {

System.out.println("Child's static code block");

}

{

System.out.println("Child's code block");

}

public Child() {

System.out.println("Child.Child()");

}

}

接下来运行实例:

public class Run {

public static void main(String[] args) {

new Child();

}

}

打印结果:

Parent's static parameter

Parent's static code block

Child's static parameter

Child's static code block

Parent's parameter

Parent's code block

Parent.Parent()

Child's parameter

Child's code block

Child.Child()

总结

Java中的静态变量和静态代码块是在类加载的时候就执行的,实例化对象时,先声明并实例化变量再执行构造函数。如果子类继承父类,则先执行父类的静态变量和静态代码块,再执行子类的静态变量和静态代码块。同样,接着在执行父类和子类非静态代码块和构造函数。

注意:(静态)变量和(静态)代码块的也是有执行顺序的,与代码书写的顺序一致。在(静态)代码块中可以使用(静态)变量,但是被使用的(静态)变量必须在(静态)代码块前面声明。

最后给出执行步骤:

1、父类静态变量和静态代码块(先声明的先执行);

2、子类静态变量和静态代码块(先声明的先执行);

3、父类的变量和代码块(先声明的先执行);

4、父类的构造函数;

5、子类的变量和代码块(先声明的先执行);

6、子类的构造函数。

java执行顺序_java执行顺序相关推荐

  1. java cd命令_java执行cd命令

    如果要在java程序里执行一条linux可以用下面的写法 Process process = Runtime.getRuntime().exec(cmd);process.waitFor(); 但是当 ...

  2. java运行过程_Java执行过程

    Java的运行原理 在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器.这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口.编译程序只需要面向虚拟机,生成虚拟机能 ...

  3. java阻塞执行命令_java执行bat命令碰到的阻塞问题的解决方法

    使用Java来执行bat命令,如果bat操作时间过长,有可能导致阻塞问题,而且不会执行bat直到关闭服务器. 如: Runtime r=Runtime.getRuntime(); Process p= ...

  4. java sql脚本_java执行sql脚本

    package com.unmi.db; import java.io.FileInputStream; import java.io.InputStream; import java.sql.Con ...

  5. java sql脚本_Java 执行 SQL 脚本文件

    是拷贝的别人的,以备学习 package com.unmi.db; import java.io.FileInputStream; import java.io.InputStream; import ...

  6. java 数组 树_java使用顺序数组实现二叉树

    顺序数组实现二叉树 实现原理 对于下标为index的节点其满足 1.左孩子节点的下标为2index+1 2.右孩子节点的下标为2index+2 代码实现 package tree; public cl ...

  7. java构造顺序_Java构造顺序

    直接上代码: >>Case1 package com.test; class Apple { private static Apple apple = new Apple(); publi ...

  8. java 排序队列_java实现顺序队列

    packagequeue;importjava.util.Scanner;public classArrayQueueLoop {public static voidmain(String[] arg ...

  9. java 类的执行顺序_Java中类的执行顺序

    讲解在代码中: package 类执行顺序; /** * java类执行顺序 * * 1.如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块 * 2.如果类有静态成员赋值或者静态初 ...

最新文章

  1. css3教程:弹性盒模型
  2. 计算机语言中display翻译,display的意思在线翻译,解释display中文英文含义,短语词组,音标读音,例句,词源,同义词,反义词【澳典网ODict.Net】...
  3. Zoj 3201 Tree of Tree
  4. MySQL学习笔记01【数据库概念、MySQL安装与使用】
  5. java 安全策略,编程式安全策略配置
  6. 拓端tecdat|R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计
  7. vs有断点就卡死_再分享 5 个 vs 调试技巧
  8. 使用markdown写大论文
  9. stdafx.h到底有什么用
  10. HDU 1019 least common Multipy
  11. 易我数据恢复向导 v2.0 官网
  12. c语言毕业论文,关于c语言的毕业论文题目[word文档]
  13. 执行SOA ——SOA实践指南
  14. 新概念英语(第四册,旧版)复习(原文及全文翻译)——Lesson 58 - Hobbies(培养一种爱好)
  15. Windows---命令打开截图工具,.bat文件执行
  16. 认真阅读完这篇文章熟练掌握关于IDEA断点调试操作(图文详解)
  17. python的秘密_Shamir秘密共享方案 (Python)
  18. C语言邻接矩阵的实现
  19. 软件测试基础-Web前端(二)
  20. Win10系统修改时间设置

热门文章

  1. jQuery插件之-selectList
  2. Visual Studio 2005 SP1安装 关键点
  3. Mac 下安装 ruby 环境解决 brew 安装 yarn 问题
  4. Eclipse 中 Debug 模式跳转到 exitCurrentThread 的问题解决
  5. 用Raspberry Pi搭建Azure IOT解决方案
  6. Echarts 解决饼图文字过长重叠的问题
  7. Windows - CMD窗口UTF8编码乱码问题的解决!
  8. $.ajax返回的JSON格式的数据后无法执行success的解决方法
  9. ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案
  10. 如何使用意图将对象从一个Android活动发送到另一个?