首页 > 编程语言 >代码阅读题-Java初始化顺序

代码阅读题-Java初始化顺序

时间:2022-09-21 17:44:41浏览次数:63  
标签:初始化 顺序 Java 静态 代码 count3 执行 构造函数

题目如下

按理来说,初始化顺序应该是:

  1. 静态代码块

静态变量在静态代码块语句之前执行,因为向前引用非法(静态变量在静态代码块后执行)

  1. main()
  2. 构造代码块
  3. 构造方法

但是这里不太一样,这里用到了懒汉单例模式
运行结果是这样的:

构造函数执行,此时:
0 1 3
静态代码块执行此时count3=4
count1=1
count2=2
count3=5

看起来构造函数好像跑到了静态代码块之前,但事实上仍然是正确的初始化顺序:
原因在于在静态代码块之前实例化了一个自己的静态引用变量,它在静态代码块之前执行了,先一步调用了构造函数

那么是不是因为它写在前面才先于静态代码块执行的呢?还真是

静态代码块执行此时count3=3
构造函数执行,此时:
0 1 4
count1=1
count2=2
count3=5

标签:初始化,顺序,Java,静态,代码,count3,执行,构造函数
From: https://www.cnblogs.com/yaocy/p/16716492.html

相关文章

  • 认识Java的整形数据结构
    摘要:java中一切都是对象,为什么int不用创建对象实例化,而可以直接使用?本文分享自华为云社区《【Java】对基本类型-整型数据结构的认识》,作者:huahua.Dr。整型数据类型有两......
  • 【Java面试】面试官为了装X故意为难问你,为什么加索引能提升查询效率?如何回答才能惊呆
    “为什么加索引能提升查询效率”!我们都认为“加索引”提升查询效率是理所应当的竟然还有理由?该怎么回答呢?大家好,我是Mic,一个工作了14年的Java程序员下面分析一下这......
  • JAVA设计模式-建造者模式
    JAVA设计模式-建造者模式介绍建造者模式是通过一步一步的步骤构建一个包含多个部件的对象,每个不同的对象都是具有相同的构建过程。适用于复杂对象的构建,用户不需要知道......
  • java XML 里获取内部类
     1、在XML中需要获取Mapper里面的内部类: 使用**Mapper$内部类名称即可 ......
  • 大专毕业了可以学习Java吗
    大专后学习Java是完全可以的。如果你想要学习java,首先你对java要有所了解,什么是java?了解一下对于零基础小白来说,什么样的学习方法是最好的?自己要有一个规划,其实我建议......
  • Java File类
    构造File对象时,既可以传入绝对路径,也可以传入相对路径可以用.表示当前目录,..表示上级目录。File对象有3种形式表示的路径,一种是getPath(),返回构造方法传入的路径,一种是ge......
  • java Xms && Xmx
    目录javaXms&&Xmx-Xms和-XmxjavaXms&&Xmx在运行java的jar包时,经常使用的命令nohupjava-Xmx8196m-Xms8196m-XX:MaxMetaspaceSize=512M-XX:MetaspaceSize=256M......
  • Java IO流(Stream)
    1.Stream流一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。Stream可以定义为数据序列。有两种流-InPutStream   -......
  • java去掉html标签,只留文本内容
    publicstaticStringdelHTMLTag(StringhtmlStr){StringregEx_script="<script[^>]*?>[\\s\\S]*?<\\/script>";//定义script的正则表达式StringregE......
  • Java8之list.stream的常见使用
    List<Integer>list=newArrayList<Integer>();从小到大方法:Collections.sort(list);从大到小方法:Collections.sort(list,Collections.reverseOrder());stream获取l......