Java(静态)变量和(静态)代码块的执行顺序
为什么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(静态)变量和(静态)代码块的执行顺序相关推荐
- java构造方法,构造代码块,静态代码块的执行顺序
构造方法,构造代码块,静态代码块的执行顺序 静态代码块:用static声明,jvm加载类时执行,仅执行一次 类中直接用{}定义,每次创建对象时执行 同级别的变量(static和普通变量)的执行顺序由代 ...
- Java笔记——Java代码块的执行顺序
Java代码块的执行顺序 Java程序中代码块的执行顺序对于学习Java的人来说是必不可少需要掌握的. 代码块 在Java中,使用{}括起来的代码被称为代码块. 根据其位置和声明的不同,可以分为: 局 ...
- java静态代码块、静态方法、静态变量、构造代码块、普通代码块、成员变量执行顺序
package smartt.styy.auth.model.voRsp;public class Test {static {String test5="555";//局部变量t ...
- Java中构造函数,静态代码块,构造代码块的执行顺序
静态代码块:用static声明,jvm加载类的时候执行,只执行一次. 构造代码块:由{}定义,每一次创建对象的时候执行. 构造函数:对象一建立就调用相应的构造函数. 静态代码块 1.它是随着类的加载而 ...
- 关于静态代码块的执行顺序,很简单的一道题,应该所有人都会吧?
之前面试的时候做过代码块和构造方法的执行顺序,当时虽然半蒙半猜作对了,但是对这个还不是特别的了解,所以就想看看今天能不能彻底搞懂,即帮助大家.也帮助自己. 简单题 9 ++ 在 Java 中有静态代码 ...
- 举例说明Java中代码块的执行顺序
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 结论 这里先把整理好的结论抛给大家,然后我在写个程序来验证我们的结论.在Java类被new的 ...
- java中this_夯实Java基础系列7:一文读懂Java 代码块和执行顺序
目录 #java中的构造方法 #构造方法简介 #构造方法实例 #例-1 #例-2 #java中的几种构造方法详解 #普通构造方法 #默认构造方法 #重载构造方法 #java子类构造方法调用父类构造方法 ...
- 牛客网Java刷题知识点之什么是代码块、普通代码块、静态代码块、同步代码块、构造代码块以及执行顺序...
不多说,直接上干货! 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说代码块是不能单独运行的,它必须要有运行 ...
- java中构造函数-静态代码块-代码块的执行顺序
面试题中,经常遇到这种题,我们只要记住一个原则,就不会出错. 三者的执行顺序:静态代码块>代码块>构造函数 package com.lbl.constructor;/*** Created ...
最新文章
- 笔试题目“翻转字符串”的实现
- 一些关于mathematica的tips
- css动画-animation各个属性详解(通俗易懂)
- 机械错题集锦2017-12-21
- SAP UI5 应用开发教程之二十三 - 列表控件的排序 Sort 和分组 Group
- Eclipse新建项目里没有Web Project应该如何处理
- 一名老程序员的一点感悟给未来的程序员
- 视图切换—多模板文档视图结构的应用
- java jni调用dll_浅谈JNI的使用--java调用dll(原创)
- 2016/06/11
- 8 年经验面试官详解 Java 面试秘诀!
- Kafka实战之整合Flume和Kafka完成实时数据采集
- python做var模型的滞后阶数怎么确定_请问关于VAR模型的滞后阶数怎么确定?
- 多线程编程中条件变量和的spurious wakeup 虚假唤醒
- android获取本地连接ip地址,参照第二步将本地连接改成自动获取IP地址即可
- xss.haozi练习通关详解
- acdream 1401 Lempel-Ziv Compression
- dk编程真好玩 python_皮皮学编程(1):从Scratch到Python
- pta中c语言编程问题答案,pta题库答案_浙大远程教育2015秋 程序设计基础C 求PTA实验代码题库liujiahai-C答案_淘题吧...
- IDEA 使用ctrl + alt + 方向键无法返回上一步解决办法
热门文章
- VTK:网格之Triangulate
- VTK:几何对象之CellTypeSource
- OpenCV各向异性图像分割anisotropic image segmentation的实例(附完整代码)
- OpenCV纠正文本中的偏斜(附完整代码)
- C语言矩阵N*N旋转的算法(附完整源码)
- C++计算nCr模p表达式如n! / (r! * (n-r)!)的实现算法(附完整源码)
- python区域增长_Python – 有效地为高密度区域创建密度图,稀疏区域的点
- python控制结构(二)_Python学习手册之控制结构(二)
- redis的基本使用笔记一
- 第十天:估算活动持续时间,类比估算,参数估算,自下而上估算,三点估算解析表