Java初始化块与构造器执行顺序有不明白的地方

问题描述

classRoot{static{System.out.println("Root的静态初始化块");}{System.out.println("Root的普通初始化块");}publicRoot(){System.out.println("Root的无参数的构造器");}}classMidextendsRoot{static{System.out.println("Mid的静态初始化块");}{System.out.println("Mid的普通初始化块");}publicMid(){System.out.println("Mid的无参数的构造器");}publicMid(Stringmsg){this();System.out.println("Mid的带参数构造器,其参数值:"+msg);}}classLeafextendsMid{static{System.out.println("Leaf的静态初始化块");}{System.out.println("Leaf的普通初始块");}publicLeaf(){super("疯狂Java讲义");System.out.println("执行Leaf的构造器");}}publicclassTest{publicstaticvoidmain(String[]args){newLeaf();newLeaf();}}

当静态初始化块执行完后,继续从顶层执行普通初始化块和构造器,在Mid类中为什么重载的构造器和默认构造器会依次执行,从哪里来的参数呢?这个执行顺序不是很明白

时间: 2025-01-06 00:25:55

Java初始化块与构造器执行顺序有不明白的地方的相关文章

初始化块和构造函数执行顺序的问题

问题描述 classParent{publicStringname="父类";publicParent(){System.out.println("父类无参数构造函数");}publicParent(Stringname){this.name=name;System.out.println("父类有参数构造函数name:"+name);}static{System.out.println("父类静态初始化块");}{Syste

Java异常发生时程序的执行顺序

一些基础知识: 1.try代码段包含可能产生例外的代码: 2.try代码段后跟有一个或多个代码段: 3.每个catch代码段声明其能处理的一种特定的异常并提供处理的方法: 4.当异常发生时,程序会终止当前的流程,根据获取异常的类型去执行相应的catch代码段,有多个符合条件的catch时,只执行第一个: 5.finally段的代码无论是否发生异常都会执行. 6.在一个try语句块中,基类异常的捕获语句不可以写在子类异常捕获语句的上面. 看一个例子: /** * @author Lansine *

Java中for循环中执行顺序问题及break, continue用法

问题|循环|执行 最近在机子上装了jdk1.4.2,装了编辑器Eclipse3.0.1,用后感觉Eclipse确实很好用,特别是参数提示功能.网上的java资源也还不少,看了<thinking in java>中文版前几章,记点问题与发现在这里:1. for循环的一个问题for(int i=1, j=i+10 ; i<5; i++ , j=i*2)System.out.println("i="+i+" j="+j); 运行结果:i=1 j=11i=

new person-我这有段代码,我对于它的执行顺序存在疑惑,为什么在父类中创建对象的操作会先于构造器执行?

问题描述 我这有段代码,我对于它的执行顺序存在疑惑,为什么在父类中创建对象的操作会先于构造器执行? public class Test { Person person = new Person("Test"); static{ System.out.println("test static"); } public Test() { System.out.println("test constructor"); } public static vo

javaee-java中构造块和成员变量的执行顺序是依据什么机制?

问题描述 java中构造块和成员变量的执行顺序是依据什么机制? 代码的执行不是应该和写的顺序无关吗 但是为什么构造块和成员变量的顺序不一样,执行的结果也不一样呢??? 求大神解答 解决方案 你的理解是有误的,成员变量的初始化值跟代码顺序有一定关系的.java创建对象时,对实例变量即类的非静态成员的初始化,主要在三个地方 1 成员变量定义时指定初始值 2 非静态代码块中指定初始值 3 构造函数中对成员变量指定初值值 这三种方式1,2执行先于构造函数3的执行,但是1,2方式的执行顺序与源程序中的排列

Java技术_基础技术(0003)_类执行顺序详解+实例(阿里面试题)+详细讲解+流程图

Java技术_基础技术(0001)_后台模拟调用action Java技术_基础技术(0002)_中间件启动class加载顺序(以tomcat为例) Java技术_基础技术(0003)_类执行顺序详解+实例(阿里面试题)+详细讲解+流程图 Java技术_基础技术(0004)_eclipse远程调试tomcat 基础技术: 对于java类各个成员的执行顺序,现拿出阿里的面试题作为样例(例子非常好,是用心出的题),在这里重新说明一下java类执行顺序的原则. 源码下载(包含题.结果.分析过程) 一.

Java 中的 static 使用之静态变量&amp;#183;静态方法&amp;#183;静态初始化块

Java 中的 static 使用之静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立.然而在某些时候,我们更希望该类所有的对象共享同一个成员.此时就是 static 大显身手的时候了!! Java 中被 static 修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.静态成员可以使用类名直接访问,也可以使用对象名进行访问.当然,鉴于他作用的特殊性更推荐用类名访问~~ 使用 static 可以修饰变量.方法和

你是否理解&amp;#106avascript的执行顺序?

执行 通常状况下,javascript作为一种解释性的脚本,都是从上而下顺序执行的,但是JavaScript还允许在其语句中嵌套,也就是这个样子: document.write("<script>alert(t);</scr"+"ipt>"); 注意:</script>不能写作</script>,要用字符串连接的形式来表述,否则会有语法错误,估计是因为JavaScript遇到</script>就以为脚本结束

你是否理解JavaScript的执行顺序?

javascript|执行 通常状况下,JavaScript作为一种解释性的脚本,都是从上而下顺序执行的,但是JavaScript还允许在其语句中嵌套,也就是这个样子: document.write("<script>alert(t);</scr"+"ipt>"); 注意:</script>不能写作</script>,要用字符串连接的形式来表述,否则会有语法错误,估计是因为JavaScript遇到</script