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

一个类中执行顺序:

静态变量
静态代码块
代码块
构造方法

子类和父类执行顺序:

父类静态变量
父类静态代码块
子类静态变量
子类静态代码块
父类代码块
父类构造方法
子类代码块
子类构造方法

直接看代码,一目了然。

public class Test {

    public static void main(String[] args) {
        new A();
        /*  结果:
         *  A静态变量
            A静态代码块
            A代码块
            A构造方法
         * */
        new B();
        /*
         *  结果:
         *  A静态变量
            A静态代码块
            B静态变量
            B静态代码块
            A代码块
            A构造方法
            B代码块
            B构造方法
         * */
    }

}
class A{
    static C c =new C("A");
    {
        System.out.println("A代码块");
    }
    static {
        System.out.println("A静态代码块");
    }
    public A(){
        System.out.println("A构造方法");
    }
}

class B extends A{
    static C c =new C("B");
    {
        System.out.println("B代码块");
    }
    static {
        System.out.println("B静态代码块");
    }
    public B(){
        System.out.println("B构造方法");
    }

}

class C {
    public C(String str){
        System.out.println(str+"静态变量");
    }
}

原文地址:https://www.cnblogs.com/jinghun/p/9205144.html

时间: 2024-08-08 14:47:20

java代码块,静态代码块,静态变量,构造方法执行顺序的相关文章

面试趣闻之java 代码块 静态代码块 构造方法 执行顺序

初级程序员总会遇到这样的问题,代码块 静态代码块 构造方法 执行顺序 父类 public class ClassSup { public ClassSup(){ System.out.println("父类构造器"); } static { System.out.println("父类静态代码块"); } { System.out.println("父类代码块"); } public void mathod01(){ System.out.pri

java面试基础题------》Java 中的父子类静态代码块,代码块,构造方法执行顺序

4.指出下面程序的运行结果. class A { static { System.out.print("1"); } public A() { System.out.print("2"); } } class B extends A{ static { System.out.print("a"); } public B() { System.out.print("b"); } } public class Hello { pu

静态代码块、静态变量等执行顺序

1 public class BasicTest { 2 public static void main(String[] args) { 3 System.out.println("m1:"); 4 Mimi m1=new Mimi(); 5 System.out.println("m2:"); 6 Mimi m2=new Mimi(); 7 } 8 } 9 10 class Mimi { 11 public static int si=0; 12 int di=

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

构造块:直接写在类中的代码块 静态代码垮:使用static关键字声明的代码块 静态代码块先于构造块,构造方法执行,而且只在类加载时候执行一次,后面在类实例化的时候会先执行构造块,而且每 执行实例化一个对象,就会执行一次构造块,执行完构造块会执行构造方法. public class ConstructorCodeTest { public static void main(String[] args) { Demo d1=new Demo(); Demo d2=new Demo(); Demo d

Java静态语句块、语句块、构造方法执行顺序

package com.imooc.practice; class Parent{ public Parent(){ System.out.println("Parent构造方法执行!"); } { System.out.println("Parent非静态语句块执行!"); } static{ System.out.println("Parent静态语句块执行!"); } } public class Child extends Parent{

java 静态、main、继承 的执行顺序

静态块:用static申明,JVM加载类时执行,仅执行一次 构造块:类中直接用{}定义,每一次创建对象时执行 public class Study_static { public static char text = 'a'; //静态对象 public Study_static(){ //构造函数 System.out.println('c'); } { //构造块 System.out.println('b'); } static{ //静态块 System.out.println(text

【JavaScript】JavaScript脚本代码的位置及在页面中的执行顺序

三.如何改变Javascript在页面的执行顺序 利用onload <script type="text/javascript">window.onload = f; function f(){ alert(1); } alert(2);</script>输出值顺序是 2.1. 需要注意的是,如果存在多个winodws.onload的话,只有最后有一个生效,解决这个办法是: window.onload = function(){f();f1();f2();...

C#继承中构造函数,成员变量的执行顺序

public class Animal { static string baseClassName; protected string _skincolor; Instancevariable iv = new Instancevariable("父类实例成员变量"); static Instancevariable siv = new Instancevariable("父类静态成员变量"); static Animal() { baseClassName = &

22.2 继承的 成员变量的执行顺序

/** 继承中成员变量的特点:* 子类只能继承父类的非私有成员* 子父类中成员变量名字是一样的获取的是子类的成员变量*** 就近原则:* 优先级(由近到远)为:局部变量---子类成员变量---父类成员变量**super:子类对象的父类引用.(可以获取父类成员的变量和方法,用法同this)* 调用父类的成员方法和变量*this:当前对象的引用.* 调用子类的成员方法和变量* */ public class 继承成员变量执行优先级 { public static void main(String[]