0
点赞
收藏
分享

微信扫一扫

java static修饰的变量、静态非静态代码块执行顺序


        静态资源是类初始化的时候加载的,非静态资源是new一个类的时候加载的,static不能修饰局部变量。关于static、代码块的执行顺序,面试中可能会考察。

 

    下面进行代码测试:

package com.xhx.java;

class MyClass {
public MyClass(String name) {
System.out.println(name + " 变量加载");
}
}

package com.xhx.java;

class ParentClass{
public static String parentStaticField = "父类静态变量";
public MyClass parentField = new MyClass("父类非静态");
public static MyClass myClass = new MyClass("父类静态");

static {
System.out.println("父类 静态块初始化");
}

{
System.out.println("父类 非静态块初始化");
}

public ParentClass(){
System.out.println("父类 构造器初始化");
}
}

package com.xhx.java;

public class ChildClass extends ParentClass{

public static String subStaticField = "子类静态变量";
public MyClass subField = new MyClass("子类非静态");
public static MyClass myClass = new MyClass("子类静态");

static {
System.out.println("子类 静态块初始化");
}

{
System.out.println("子类 非静态块初始化");
}

public ChildClass(){
System.out.println("子类构造器初始化");
}
}

package com.xhx.java;

/**
* xuhaixing
* 2018/8/11 20:49
**/
public class App {
public static void main(String[] args) {
new ChildClass();
}
}

 

java static修饰的变量、静态非静态代码块执行顺序_非静态

执行顺序大致如下:

    先执行静态的,再执行非静态的;

静态中:

     先执行静态变量,再执行静态代码块;

     先执行父类静态,再执行子类静态;

非静态中:

      先执行非静态变量,再执行非静态代码块,再执行构造器

      先执行父类,再执行子类

实时内容请关注微信公众号,公众号与博客同时更新:程序员星星

java static修饰的变量、静态非静态代码块执行顺序_子类_02

举报

相关推荐

0 条评论