java中类以及方法的加载顺序

先看下面的代码:

public class Test {

public static int a =0 ;

static {

a = 10;

System.out.println("静态代码块执行a="+a);

}

{

a = 8;

System.out.println("非静态代码块(构造代码块)在执行a="+a);

}

public Test(){

this("调用无参构造方法,a="+ a);

System.out.println("无参构造方法在执行a="+ a);

}

public Test(String n){

this(n ,"调用带参构造方法1,a="+ a);

System.out.println("带参构造方法1在执行a="+ a);

}

public Test(String s1, String s2){

System.out.println(s1 + "," +s2);

}

public static void main(String[] args){

Test test = null;

System.out.println("下面new一个Test实例:");

test = new Test();

}

}

在我编译运行的时候,方法的加载顺序如何呢?先看一下打印信息:

静态代码块执行a=10

下面new一个Test实例:

非静态代码块(构造代码块)在执行a=8

调用无参构造方法,a=10,调用带参构造方法1,a=10

带参构造方法1在执行a=8

无参构造方法在执行a=8

首先打印静态代码块的内容,因为在虚拟机在首次加载Java类时,会对静态代码块、静态成员变量、静态方法进行一次初始化(静态间按顺序执行)。

然后打印非静态内容,先是执行有this()的构造方法,因为此时构造方法还未初始化,没有结果。再按顺序执行其余代码块。


每天进步一点点。

推荐微信公众号【排骨肉段】,记录日常的美好。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,885评论 18 399
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 4,731评论 1 114
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,292评论 19 139
  • Win7下如何打开DOS控制台? a:开始--所有程序--附件--命令提示符 b:开始--搜索程序和文件--cmd...
    逍遥叹6阅读 1,639评论 4 12
  • 似乎巧合而又是我的能量所吸引,感恩生命中遇到的每个人。上个月伙伴分享了李欣频老师的书,咦,这不就是我一直在...
    特立独行的曼儿阅读 518评论 0 5