为什么80%的码农都做不了架构师?>>>   

本文讨论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、子类的构造函数。

转载于:https://my.oschina.net/zjg23/blog/777929

Java(静态)变量和(静态)代码块的执行顺序相关推荐

  1. java构造方法,构造代码块,静态代码块的执行顺序

    构造方法,构造代码块,静态代码块的执行顺序 静态代码块:用static声明,jvm加载类时执行,仅执行一次 类中直接用{}定义,每次创建对象时执行 同级别的变量(static和普通变量)的执行顺序由代 ...

  2. Java笔记——Java代码块的执行顺序

    Java代码块的执行顺序 Java程序中代码块的执行顺序对于学习Java的人来说是必不可少需要掌握的. 代码块 在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同,可以分为: 局 ...

  3. java静态代码块、静态方法、静态变量、构造代码块、普通代码块、成员变量执行顺序

    package smartt.styy.auth.model.voRsp;public class Test {static {String test5="555";//局部变量t ...

  4. Java中构造函数,静态代码块,构造代码块的执行顺序

    静态代码块:用static声明,jvm加载类的时候执行,只执行一次. 构造代码块:由{}定义,每一次创建对象的时候执行. 构造函数:对象一建立就调用相应的构造函数. 静态代码块 1.它是随着类的加载而 ...

  5. 关于静态代码块的执行顺序,很简单的一道题,应该所有人都会吧?

    之前面试的时候做过代码块和构造方法的执行顺序,当时虽然半蒙半猜作对了,但是对这个还不是特别的了解,所以就想看看今天能不能彻底搞懂,即帮助大家.也帮助自己. 简单题 9 ++ 在 Java 中有静态代码 ...

  6. 举例说明Java中代码块的执行顺序

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 结论     这里先把整理好的结论抛给大家,然后我在写个程序来验证我们的结论.在Java类被new的 ...

  7. java中this_夯实Java基础系列7:一文读懂Java 代码块和执行顺序

    目录 #java中的构造方法 #构造方法简介 #构造方法实例 #例-1 #例-2 #java中的几种构造方法详解 #普通构造方法 #默认构造方法 #重载构造方法 #java子类构造方法调用父类构造方法 ...

  8. 牛客网Java刷题知识点之什么是代码块、普通代码块、静态代码块、同步代码块、构造代码块以及执行顺序...

    不多说,直接上干货! 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说代码块是不能单独运行的,它必须要有运行 ...

  9. java中构造函数-静态代码块-代码块的执行顺序

    面试题中,经常遇到这种题,我们只要记住一个原则,就不会出错. 三者的执行顺序:静态代码块>代码块>构造函数 package com.lbl.constructor;/*** Created ...

最新文章

  1. 笔试题目“翻转字符串”的实现
  2. 一些关于mathematica的tips
  3. css动画-animation各个属性详解(通俗易懂)
  4. 机械错题集锦2017-12-21
  5. SAP UI5 应用开发教程之二十三 - 列表控件的排序 Sort 和分组 Group
  6. Eclipse新建项目里没有Web Project应该如何处理
  7. 一名老程序员的一点感悟给未来的程序员
  8. 视图切换—多模板文档视图结构的应用
  9. java jni调用dll_浅谈JNI的使用--java调用dll(原创)
  10. 2016/06/11
  11. 8 年经验面试官详解 Java 面试秘诀!
  12. Kafka实战之整合Flume和Kafka完成实时数据采集
  13. python做var模型的滞后阶数怎么确定_请问关于VAR模型的滞后阶数怎么确定?
  14. 多线程编程中条件变量和的spurious wakeup 虚假唤醒
  15. android获取本地连接ip地址,参照第二步将本地连接改成自动获取IP地址即可
  16. xss.haozi练习通关详解
  17. acdream 1401 Lempel-Ziv Compression
  18. dk编程真好玩 python_皮皮学编程(1):从Scratch到Python
  19. pta中c语言编程问题答案,pta题库答案_浙大远程教育2015秋 程序设计基础C 求PTA实验代码题库liujiahai-C答案_淘题吧...
  20. IDEA 使用ctrl + alt + 方向键无法返回上一步解决办法

热门文章

  1. VTK:网格之Triangulate
  2. VTK:几何对象之CellTypeSource
  3. OpenCV各向异性图像分割anisotropic image segmentation的实例(附完整代码)
  4. OpenCV纠正文本中的偏斜(附完整代码)
  5. C语言矩阵N*N旋转的算法(附完整源码)
  6. C++计算nCr模p表达式如n! / (r! * (n-r)!)的实现算法(附完整源码)
  7. python区域增长_Python – 有效地为高密度区域创建密度图,稀疏区域的点
  8. python控制结构(二)_Python学习手册之控制结构(二)
  9. redis的基本使用笔记一
  10. 第十天:估算活动持续时间,类比估算,参数估算,自下而上估算,三点估算解析表