首页 > 编程语言 > 详细

Java的静态变量,成员变量,静态代码块,构造块的加载顺序

时间:2019-10-28 20:09:35      阅读:55      评论:0      收藏:0      [点我收藏+]

题目:

public class StaticTest{
static StaticTest st = new StaticTest();
public static void staticFunction(){
System.out.println("4");
}
static{
System.out.println("1");
}

StaticTest(){
System.out.println("3");
System.out.println("a="+a+" b="+b);
}


int a=100;
static int b=112;
{
System.out.println("2");
}
public static void main(String args[]){
staticFunction();
}

}

执行结果:

技术分享图片

 

 

分析:

类的生命周期是:加载->验证->准备->解析->初始化->使用->卸载
准备和初始化阶段涉及类变量的初始化和赋值
准备阶段:为static类变量分配内存并设置默认值,st = null b = 0
初始化阶段:
执行类构造器
先按顺序执行静态变量,static StaticTest st = new StaticTest();
然后会执行StaticTest()方法,执行前先执行构造代码块再初始化成员变量,所以先输出2,a=100,b由于已经初始化完毕,不执行
执行StaticTest()中的输出3,,a=100,b=0
StaticTest()执行完之后,顺序执行static代码块,输出1
main中调用staticfunction 输出4

                                                                 |—>执行构造代码块->初始化成员变量-|
执行static变量初始化->执行静态变量->执行方法->继续执行static代码块->main调用方法

 

Java的静态变量,成员变量,静态代码块,构造块的加载顺序

原文:https://www.cnblogs.com/firstB/p/11754609.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!