java static修饰的变量、静态非静态代码块执行顺序
发布时间:2022-10-28 09:24:24 342 相关标签: # java# java
静态资源是类初始化的时候加载的,非静态资源是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();
}
}

执行顺序大致如下:
先执行静态的,再执行非静态的;
静态中:
先执行静态变量,再执行静态代码块;
先执行父类静态,再执行子类静态;
非静态中:
先执行非静态变量,再执行非静态代码块,再执行构造器
先执行父类,再执行子类
实时内容请关注微信公众号,公众号与博客同时更新:程序员星星

文章来源: https://blog.51cto.com/u_7841967/5792595
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报