小工具知识网

当前位置: 首页 > 行业知识 > 面试题:单例模式输出静态变量

行业知识

面试题:单例模式输出静态变量

2026-11-14 03:27:17 来源:互联网转载

面试题

一、写出两种情况下的运行结果。第一种如下面的代码所示;第二种是把“1==”所在行注释掉,把“2==”行的注释去掉。class Singleton {private static Singleton singleton = new Singleton();//1==static int i;static int j = 0;//private static Singleton singleton = new Singleton();        //2==private Singleton() {i++;j++;}public static Singleton getInstance() {return singleton;}}public static void main(String[] args) {Singleton.getInstance();System.out.println("i=" + Singleton.i + ",j=" + Singleton.j);}结果1:i=1,j=0结果2:i=1,j=1

前�index.php/tags-41973.html" >��天面试有这么一道题,我没有搞明白,最后研究了半天原来是加载顺序的问题。

()

结果一加载顺序:

原因:

1 首先执行main中的Singleton singleton = Singleton.getInstance();

()

2 类的加载:加载类Singleton

3 类的验证

4 类的准备:为静态变量分配内存,设置默认值。这里为singleton(引用类型)设置为null,i,j(基本数据类型)设置默认值0

5 类的初始化(按照赋值语句进行修改):

执行private static Singleton singleton = new Singleton();

执行Singleton的构造器:value1++;value2++; 此时i,j均等于1

执行

public static int i;

public static int j = 0;

此时i=1,j=0

结果2加载顺序:1 1

原因:

1 首先执行main中的Singleton singleton = Singleton.getInstance();

2 类的加载:加载类Singleton

3 类的验证

4 类的准备:为静态变量分配内存,设置默认值。这里为i,j(基本数据类型)设置默认值0,singleton2(引用类型)设置为null,

5 类的初始化(按照赋值语句进行修改):

执行

public static int i = 0;

此时vi=0(value1不变,依然是0);

执行

private static Singleton singleton = new Singleton();

执行Singleton的构造器:i++;j++;

此时i,j均等于1,即为最后结果

上一篇:Chrome闪退终极解决方案,轻松修复浏览器闪退问题!

下一篇:2024年前端最新WEB前端工具推荐丨分享6个热门颜色选择器组件,2024年最新近期有什么面试