当前位置: 首页 > news >正文

荆州建设局网站海珠营销型网站建设公司

荆州建设局网站,海珠营销型网站建设公司,页面设计简历,WordPress无法自动推送面试的的时候经常会被问到包含静态代码块、实例代码块和构造器等代码结构的加载顺序问题,下面借用一个面试题,回顾一下类的代码加载顺序。 public class AooTest {public static void main(String[] args) {AooTest.f1();}static AooTest test1 new Ao…

      面试的的时候经常会被问到包含静态代码块、实例代码块和构造器等代码结构的加载顺序问题,下面借用一个面试题,回顾一下类的代码加载顺序。

public class AooTest {public static void main(String[] args) {AooTest.f1();}static AooTest test1 = new AooTest();static {System.out.println("1");}{System.out.println("2");}AooTest() {System.out.println("3");System.out.println("a=" + a + ", b=" + b);}private static void f1() {AooTest aooTest = new AooTest();System.out.println("4");}int a = 5;static int b = 6;
}

先看一下输出结果:

2
3
a=5, b=0
1
2
3
a=5, b=6
4

      这个题比较绕,一般就是面试的时候故意出的费脑细胞的题,开发的时候压根不会碰到。但是这种题能够加深我们对类加载机制的理解,现在我们逐行去分析一下:

1、首先执行main方法,这里会执行当前AooTest类的加载,引起类加载有7种情况:

      1.1:创建类的实例,new关键词;
      1.2:访问类或接口的静态变量,或者对静态变量赋值;
      1.3:调用类的静态方法;
      1.4:程序的启动类所在的类;
      1.5:初始化一个类的子类时会引起父类的主动使用和初始化;
      1.6:反射,如Class.forName("com.cn.Test01");
      1.7:jdk1.7之后的动态语言支持也会引起类的初始化。

2、类的加载会出发静态代码块,这个题里面有多个静态属性和静态代码块,按照从上往下的顺序执行,依次是:

3、这里在执行1的时候,就去执行new AooTest(),对当前类实例化,那么实例化就需要执行成员属性赋值和实例代码块、之后再执行构造器,如果有多个成员属性或者多个实例代码块也是从上往下的顺序执行,这里我们看下:

所以,先输出 2(步骤1.1),之后对a赋值 a= 5(步骤1.2)。

然后再执行构造器的代码(步骤1.3),首先输出 3,接下来输出 a = 5, b=0,这里有些同学会有疑问,为什么 b 是0呢?大家注意看,前面类加载的时候,我们只是执行了步骤1,而 静态属性b的赋值要到步骤3种才能执行,所以这里b是没有被赋值的,默认是0。

4、然后回到前面的图,执行步骤2,输出1

5、再往下执行步骤3,注意这里b会被赋值了 b =6。

经过以上步骤,类的加载执行完成,所有的静态属性和静态代码块都执行完成。

6、下面进入了main方法,执行了 AooTest.f1()函数。

在f1方法里面,AooTest又一次被实例化了,所以如果前面被实例化的步骤一样,实例代码块输出2,构造器输出3,接下来输出输出 a = 5, b=6,这里注意,b在前面已经赋值了,所以与上面的输出不同。

7、实例化结束之后,最后输出 4 。

最后来总结一下类加载的顺序:

1、最先加载静态成员变量、静态代码块,如果有多个,按照从上往下的顺序加载;

2、其次实例化普通成员变量、实例代码块,如果有多个,按照从上往下的顺序执行;

3、最后执行构造器函数

http://www.yayakq.cn/news/514052/

相关文章:

  • 私做网站名电子章网站建设后台管理便捷
  • 淄博网站制作营销开发公司产品部课件
  • 成都好的网站设计公司做网站背景音乐
  • 网站网页转app源码网页制作教程步骤
  • 郑州那个公司做网站好怎样淘宝seo排名优化
  • 软件开发网站开发学习房地产设计公司
  • 万网有域名怎么建网站什么做网站推广
  • 周浦网站建设公司旺道seo推广有用吗
  • 做羞羞的事情的网站乡村旅游电子商务网站建设
  • 合肥网站改版上海ui设计公司
  • 品牌商标购买网站求个网站或者软件
  • 成都外贸网站建设费用西安百度公司
  • 网站上的3d产品展示怎么做请问做网站和编程哪个容易些
  • 聊城推广网站wordpress api 路径
  • 做网上卖酒的网站有几家188建站系统源码
  • 爱站网官网关键词wordpress自适应自媒体主题
  • 北京网站设计费用mysql开发网站开发
  • 包头市建设厅官方网站wordpress怎么给产品编号
  • 求个没封的w站2021软件给公司做网站数据分析
  • 东莞专业营销网站建设推广网页设计工资一般多少2017
  • 网站域名的作用网址怎么申请注册
  • 户型图在哪个网站找网站建设中 尽情期待
  • 5118站长平台中英双语网站建设
  • 成品网站1688入口的功能介绍做公司网站需注意什么
  • 做网站设计能赚钱吗正版宝安网站推广
  • 哈尔滨哪里做网站网站企业建设
  • 定制型网站建设推广青海做网站最好的公司
  • 武进网站建设好么软件工程开发流程
  • 快速建站公司做ppt模板网站
  • 西部数码怎么上传网站江苏电信网站备案