Java笔记——Java代码块的执行顺序
Java代码块的执行顺序
Java程序中代码块的执行顺序对于学习Java的人来说是必不可少需要掌握的。
代码块
在Java中,使用{}括起来的代码被称为代码块。
根据其位置和声明的不同,可以分为:
- 局部代码块
- 构造代码块
- 静态代码块
执行顺序
首先执行静态代码块
接着执行构造代码块
最后指向构造方法
静态代码块 >>> 构造代码块 >>>> 构造方法
考虑Java中关于继承的情况,这子类和父类的执行顺序稍有变化:
当一个类被JVM装载后各种代码块的执行顺序大致如下:
这里的执行顺序同子类构造中有一个默认的父类构造super()无关,不是执行到隐藏的super()才开始初始化父类的,类的初始化是分层初始化,即先初始化父类,再初始化子类,初始化每个类的过程中,进行类的初始化工作,先进行成员变量的初始化,成员变量的初始化顺序是:默认初始化,即int为0这种->显示初始化,例如给int型显示初始化了值->构造方法初始化,所以是这里执行到了构造方法。
但是一定要注意,父类初始化选择的构造方法却和子类中super 选择的构造相关,下面代码很好的解释了这点。
测试代码
package com.chen;public class People {{System.out.println("父类构造代码块");}static {System.out.println("父类静态代码块");}public People() {System.out.println("父类构造代码块");}public People(String str){System.out.println("父类含参构造方法");}
}
package com.chen;public class Student extends People{{System.out.println("子类构造代码块");}static {System.out.println("子类静态代码块");}public Student() {//super(null); System.out.println("子类构造代码块");}public static void main(String[] args) {new Student();}
}
执行结果为:
父类静态代码块
子类静态代码块
父类构造代码块
父类构造代码块
子类构造代码块
子类构造代码块
注:
如果取消 super(null); 的注释,那么执行结果会发生变化,在选择父类的构造方法的时候会选择含参构造方法,执行结果为:
父类静态代码块
子类静态代码块
父类构造代码块
父类含参构造方法
子类构造代码块
子类构造代码块
Java笔记——Java代码块的执行顺序相关推荐
- Java(静态)变量和(静态)代码块的执行顺序
为什么80%的码农都做不了架构师?>>> 本文讨论Java中(静态)变量.(静态)代码块的执行顺序 首先创建3个类: //1.Foo类,用于打印变量 public class ...
- java构造方法,构造代码块,静态代码块的执行顺序
构造方法,构造代码块,静态代码块的执行顺序 静态代码块:用static声明,jvm加载类时执行,仅执行一次 类中直接用{}定义,每次创建对象时执行 同级别的变量(static和普通变量)的执行顺序由代 ...
- java 静态块初始化_简单了解java中静态初始化块的执行顺序
这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...
- 举例说明Java中代码块的执行顺序
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 结论 这里先把整理好的结论抛给大家,然后我在写个程序来验证我们的结论.在Java类被new的 ...
- java中this_夯实Java基础系列7:一文读懂Java 代码块和执行顺序
目录 #java中的构造方法 #构造方法简介 #构造方法实例 #例-1 #例-2 #java中的几种构造方法详解 #普通构造方法 #默认构造方法 #重载构造方法 #java子类构造方法调用父类构造方法 ...
- Java中构造函数,静态代码块,构造代码块的执行顺序
静态代码块:用static声明,jvm加载类的时候执行,只执行一次. 构造代码块:由{}定义,每一次创建对象的时候执行. 构造函数:对象一建立就调用相应的构造函数. 静态代码块 1.它是随着类的加载而 ...
- 关于静态代码块的执行顺序,很简单的一道题,应该所有人都会吧?
之前面试的时候做过代码块和构造方法的执行顺序,当时虽然半蒙半猜作对了,但是对这个还不是特别的了解,所以就想看看今天能不能彻底搞懂,即帮助大家.也帮助自己. 简单题 9 ++ 在 Java 中有静态代码 ...
- 牛客网Java刷题知识点之什么是代码块、普通代码块、静态代码块、同步代码块、构造代码块以及执行顺序...
不多说,直接上干货! 这种形式的程序段我们将其称之为代码块,所谓代码块就是用大括号({})将多行代码封装在一起,形成一个独立的数据体,用于实现特定的算法.一般来说代码块是不能单独运行的,它必须要有运行 ...
- java中构造函数-静态代码块-代码块的执行顺序
面试题中,经常遇到这种题,我们只要记住一个原则,就不会出错. 三者的执行顺序:静态代码块>代码块>构造函数 package com.lbl.constructor;/*** Created ...
最新文章
- [CodeForces 300D Painting Square]DP
- ASP.NET常用语句(转载)
- CCIE理论-第十五篇-IPV6-重分布+ACL+前缀列表
- 工作流实战_28_flowable 任务多实例
- 什么是Docker??
- 虚拟服务器数据库怎么导入数据库,BlueHost虚拟主机使用SSH怎么导入MySQL数据库...
- html隐藏标签console,console的隐藏知识点,你get到了嘛?
- 远程服务器停止运行怎么回事,远程桌面连接已停止工作解决方法
- 浅谈编程能力的培养与提高——写给编程初学者的话
- 广东计算机一级试题答案,广东计算机一级考试试题和答案
- 返款接口教程,转账到支付宝账户开通方法
- ElementUI 文本内容不能自动换行,内容超出显示(遇到中文、空格才会换行)
- 第十一天: SD卡原理分析及SD卡启动详解
- vue3 ref 和 reactive 区别
- A Vertical Kelvin Test Structure for Measuring the True Specific Contact Resistivity
- 关于WIN10装CH340驱动的一些小小的注意事项
- 华为机试 经验(血泪史啊)
- 克服三分钟热度的状况 训练自己养成习惯不半途而废
- 计算Yocto中LIC_FILES_CHKSUM的md5值
- java语言【 #93. 温度换算】(已通过)