首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 静态块、构造块、构造函数执行顺序

Java代码行执行顺序: 1.静态块:用static声明,JVM加载类时执行,仅执行一次 2.构造块:类中直接用{}定义,每次创建对象时执行 3.执行顺序优先级:静态块>main()>构造块>构造方法...4.静态块和静态属性优先执行,谁在前先执行谁。...出现继承时: 1.初始化父类的静态变量、静态代码块,初始化的顺序按照出现的顺序。 2.初始化子类的静态变量,静态代码块。 3.初始化父类的成员变量。 4.执行父类的构造函数。...6.构造代码块创建对象时执行 7.执行子类的构造函数。...("n="+n); System.out.println(" m="+m); } static {//实例化多个对象时,静态块只执行一次,即在第一个实例化对象时执行

1.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java 静态代码块,构造代码块,构造函数执行顺序

    具体说,静态代码块是由类调用的。...类调用时,先执行静态代码块,然后才执行主函数的,总的来说,静态代码块是和类一起的,优先级最高,类加载的同时,静态代码块同时也执行,但只执行一次,所以作用一般是用来加载一些配置代码,或者加载某些文件配置。...这里要强调一下,有对象建立,才会运行构造代码块,类不能调用构造代码块的,而且构造代码块与构造函数的执行顺序是前者先于后者执行。...,都会先执行相同的构造代码块。...也就是说,构造代码块中定义的是不同对象共性的初始化内容。 运行结果: 可以看出来,静态代码块只执行一次,而每次创建对象都会调用共同的构造代码块,而构造函数也只在创建对象时执行该对象的构造函数。

    79310

    静态代码块、非静态代码块、构造函数三者执行顺序

    主要探讨一下关于静态代码块,非静态代码块,构造函数的执行顺序。 如有错误,欢迎指出。 首先: 静态成员变量和静态代码块的优先级是一样的,先定义的先执行。...在创建一个对象的时候会执行非静态代码块和构造函数 再者是执行顺序: /* * *(1)父类静态成员和静态初始化块,按在代码中出现的顺序依次执行。...* *(2)子类静态成员和静态初始化块,按在代码中出现的顺序依次执行。 * *(3)父类实例成员和实例初始化块,按在代码中出现的顺序依次执行。 * *(4)执行父类构造方法。...* *(5)子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。 * *(6)执行子类构造方法。...1.静态成员变量和静态代码块的优先级是一样的,先定义的先执行。

    49220

    java的静态属性,静态块,构造函数的执行顺序

    今天为了搞清楚实例化一个对象时其属性等的实例化顺序,写了下面的例子来探究: 实例化一个C的对象,其中,A为其静态属性,B为其普通属性;D为C的父类,E为D的静态属性,F为D的普通属性;C中还包含了静态代码块和普通代码块...(); F f = new F(); public D(){ System.out.println("构造父类D"); } } class C extends D{ /** * 静态代码块先于构造器执行...普通块先于构造块 只执行一次 * 凡是静态的与对象无关,先于对象存在的; 凡是静态的都是共享的 */ B b = new B(); static A a = new A();...构造函数C -------第2次实例化------- 父类的普通属性F 构造父类D 构造普通属性B 普通代码块 构造函数C 结论(实例化顺序): 父类静态的属性 父类静态的代码块 子类静态的属性...子类静态的代码块 父类普通属性 父类普通代码块 父类构造函数 子类普通属性 子类普通代码块 子类构造函数 静态的东西只在第一次实例化的时候执行 原则:先静态后非静态、先父类后子类

    1.1K60

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

    构造方法,构造代码块,静态代码块的执行顺序静态代码块:用static声明,jvm加载类时执行,仅执行一次类中直接用{}定义,每次创建对象时执行 同级别的变量(static和普通变量)的执行顺序由代码执行顺序决定...Rumenz();输出 代码解读复制代码静态变量name:入门小站静态代码块。。。...构造代码块。。。变量 id:100构造函数。。。。不执行Rumenz r=new Rumenz();输出 代码解读复制代码静态变量name:入门小站静态代码块。。。....静态代码块 代码解读复制代码static { System.out.println("静态代码块。。。")...;}由jvm加载类时执行,而且只执行一次.静态代码块是给类进行初始化,构造代码块是给对象进行初始化静态代码块中的变量属于局部变量

    4400

    Java中静态代码块、代码块以及构造函数执行顺序详解

    静态代码块,代码块,构造方法执行顺序 前段时间面试,做到一个笔试题主要考察的是静态代码块,代码块,构造方法的执行顺序,由于自己没复习所以这个题肯定没做出来,回家后在Idea中进行代码测试运行。...可以看出到实际上执行顺序应该是父类静态代码块——>子类静态代码块——>父类代码块——>父类构造方法——>子类代码块——>子类构造方法。 为什么先执行父类的静态代码块呢? 但是为什么会这样呢?...静态代码块在Java是最优先执行的,且只会执行一次,当子类的super在调用父类的构造方法时所以先回去执行父类的静态代码块,然后执行子类的静态代码块,所以会执行父类静态代码块再执行子类静态代码块。...为什么第二个执行代码块? 讲完了静态代码块是最优先执行的,但是为什么代码块的执行顺序会比构造方法先呢?我们通过反编译工具来看一下 ?...通过反编译工具发现,代码块实际上是被放到了构造方法中,且是放在了构造方法的第一行,那么就不难解释为什么代码块会比构造方法执行顺序靠前。

    1.5K30

    静态代码块、静态变量,构造代码块、实例变量的执行顺序和继承逻辑

    变种面试题 原因: 冷知识 case4:子类和父类有`同名同类型`的`静态`变量的时候 case5:静态代码块属于类的,并且优先于main方法执行(有难度) 注解对执行顺序的影响 继续补充:子类默认调用...执行构造函数之前,必须初始化实例属性,所以a=110 2. 静态变量从上到下初始化,而st变量还没初始化完呢,所以b此时值为0 执行紧跟着的静态代码块。...类构造器:编译器收集所有静态语句块和类变量的赋值语句,按语句在源码中的**顺序(请注意这三者是有序的)**合并生成类构造器 因此现在执行:st = new StaticTest().此时我们发现,就会进行对象的初始化了...(看到没,这个时候b变量的赋值语句还没有执行哦~~~) 而对象初始化的顺序为:成员变量 -> 普通代码块 -> 构造函数,因此这一波过后:a=110了。...继续执行类构造器,显然就会执行static语句块了~~~输出1,最后调用静态方法,就输出4了 完美~ 冷知识 通过结果看,有点颠覆我们之前的认知。

    97850

    类的实例化顺序:静态数据、构造函数和字段的执行顺序详解

    当我们创建一个类的实例时,其中涉及到多个步骤,包括父类和子类的静态数据初始化、构造函数的执行以及字段的初始化。本文将深入探讨类的实例化顺序,解释每个步骤的执行时机和逻辑,帮助您更好地理解这个过程。...类的实例化顺序概述 在理解类的实例化顺序之前,让我们先概括一下这个过程的步骤: 父类的静态数据初始化:首先,父类的静态数据(静态字段和静态块)会被初始化。...子类的构造函数通常会首先调用父类的构造函数,然后执行子类自己的初始化操作。 字段的初始化:在构造函数执行期间,类的实例字段(非静态字段)会被初始化。...字段的初始化: 所有字段的初始化都在构造函数中完成。 实例化顺序总结 通过上述示例和步骤分析,我们可以总结类的实例化顺序如下: 父类的静态数据初始化。 父类的构造函数,包括父类的字段初始化。...结语 类的实例化顺序涉及到静态数据初始化、构造函数和字段初始化等多个步骤,了解这些步骤的执行顺序对于编写正确的面向对象程序至关重要。本文通过示例和详细解释,希望能够帮助读者更好地理解类的实例化过程。

    86620

    【小家java】类中静态代码块、构造代码块、静态变量、成员变量执行顺序和继承逻辑

    如果StaticDemo1没有new或者静态方法没有调用,静态代码块是不会被执行的哦,只有加载了才会执行,并且只执行一次 static块真正的执行时机。...,我们很容易的总结出来执行的顺序。...我觉得脑子里应该浮现出一个这样的知识点: Java中赋值顺序: 1、父类的静态变量赋值 2、自身的静态变量赋值 3、父类成员变量赋值和父类块赋值 4、父类构造函数赋值 5、自身成员变量赋值和自身块赋值...类构造器:编译器收集所有静态语句块和类变量的赋值语句,按语句在源码中的顺序合并生成类构造器 因此现在执行:st = new StaticTest().此时我们发现,就会进行对象的初始化了(看到没,这个时候...b变量的赋值语句还没有执行哦~~~) 而对象初始化的顺序为:成员变量 -> 普通代码块 -> 构造函数 因此这一波过后:a=110了。

    1.5K20

    Java代码块执行顺序初探

    当父类与子类都有静态代码块和构造函数的时候,执行顺序如下: 父类静态代码块 > 子类静态代码块(Java虚拟机加载类时,就会执行该块代码)。...小结 无继承的的初始化顺序 静态成员变量(静态代码块)→普通成员变量→构造器 有继承的初始化顺序 父类静态成员变量、静态代码块→子类静态成员变量、静态代码块→父类普通成员变量、普通代码块→父类构造器→子类普通成员变量...其他 类加载过程,不涉及构造方法 实例化过程,涉及构造方法 1、类中所有属性的默认值(一举而成) 2、父类静态属性初始化,静态块,静态方法的声明(按出现顺序执行) 3、子类静态属性初始化,静态块,静态方法的声明...(按出现顺序执行) 4 、调用父类的构造方法, 首先父类的非静态成员初始化,构造块,普通方法的声明(按出现顺序执行) 然后父类构造方法 5、 调用子类的构造方法, 首先子类的非静态成员初始化,构造块,...普通方法的声明(按出现顺序执行) 然后子类构造方法 参考资料 深入了解Java程序执行顺序 Java中普通代码块,构造代码块,静态代码块区别及代码示例 Java:构造器,构造代码块,静态代码块的执行顺序

    2.7K10

    一文整懂 Java 中静态代码块 初始块 构造方法的执行顺序

    一文整懂 Java 中静态代码块 / 初始块 / 构造方法的执行顺序 “ 相信,刷过面试题应该都碰到过很多题,关于类继承后 Java 中静态代码块 / 初始块 / 构造方法的执行顺序问题,每每记一下又忘了...,那么,今天来用不多的时间复习一下” 01.静态代码块 / 初始块 / 构造方法的执行顺序 package erdan.demo; public class Demo { static {...wx_fmt=png] 笔记:初始块(非静态代码块)总是和构造方法是一家子,会一块出现 02.测试继承之后的执行顺序 package erdan.demo; public class ChildrenDemo...类比子类先执行 态代码块只会输出一次,初始块与构造方法是一家子,输出在一块,初始块会在构造前初始化 03.总结 父类比子类先行执行 静态代码块,在类第一次加载的时候,会初始化一次,适合项目中初始化全局参数...,常量等 初始块与构造方法是一家子,但是初始块会在构造函数前执行,初始块适合重载构造函数存在相同代码,可以抽出来使用

    87711

    静态代码块、构造代码块以及构造函数的加载顺序

    构造代码块,和构造函数都存在于一个类中,只不过,他们执行的先后顺序和执行的次数不同。...执行顺序优先级:静态块>main()>构造块>构造方法。...作用分析 静态代码块用于给类初始化,类加载的时候就会被执行; 构造代码块用于给对应对象初始化,只要创建对象就会被执行,而且执行的顺序优先于构造函数; 构造函数用于给对应对象初始化,只要创建对象,就会选择相应的构造函数进行初始化...总结:静态代码块是最先执行的,然后执行父类的构造代码块以及父类的构造方法,接着去执行子类的非静态代码块以及子类的构造方法。...顺序为:初始化父类静态代码块->初始化子类静态代码块->初始化父类构造代码块->初始化父类构造方法->初始化子类构造代码块->初始化子类构造方法  根据输出结果,"before new Child()

    73320

    static静态代码块加载和执行

    静态代码块,非静态代码块,无参构造,有参构造,这些代码片段分别在什么时候加载执行?...package com.java4all.test10; public class Father { static { System.out.println("father的静态代码块...son的静态代码块 father的非静态代码块 father的构造方法 son的非静态代码块 son的构造方法 创建son对象后 4.如果父类没有无参构造,只有有参构造 这种情况,子类需要在构造方法中显示的调用父类的有参构造...son的静态代码块 father的非静态代码块 father的带参构造方法 son的非静态代码块 son的构造方法 创建son对象后 5.如果父类没有无参构造,也没有有参构造 子类的构造只管自己就好,...6.总结 总的来说,按照如下的大顺序调用: 父类静态代码块 子类静态代码块 父类非静态代码块 父类构造函数 子类非静态代码块 子类构造函数

    58320

    Java中try-finally块的执行顺序

    本文主要介绍的关于异常处理的时候try-catch-finally块的执行顺序,一般情况下,finally块是会执行,在Java中,try-finally块的执行顺序通常遵循以下规则: try块中的代码首先被执行...如果try块中的代码执行完毕,控制流将转到finally块。无论try块中的代码是否抛出异常,finally块中的代码都将被执行。...finally块中的代码执行完毕后,整个try-finally块结束,控制流将继续到下一个语句或代码块。...但是有几种情况是不执行的,比如: 1). return语句在try之前,还没执行就返回了,当然不执行。...try有return语句,但是执行完毕之后没有立即返回,因为要执行finally块,try中的return结果会放在类似一个队列中,之后如果finally中有return语句,则会把finally中的return

    25950
    领券