关于类加载的一道面试题
来源:互联网 发布:软件开发平台 编辑:程序博客网 时间:2024/05/28 03:02
class Singleton{
private static Singleton singleton = new Singleton();
public static int counter1 ;
public static int counter2 = 0;
private Singleton(){
counter1++;
counter2++;
}
public static Singleton getInstance(){
return singleton ;
}
}
public class Test{
public static void main(String[] args){
Singleton singleton = Singleton.getInstance();
System.out.println("counter1 = "+singleton.counter1 );
System.out.println("counter2 = "+singleton.counter2 );
}
}
Singleton singleton = Singleton.getInstance();这行代码首先给Singleton中的变量赋予默认的初始值:
即:private static Singleton singleton的singleton赋予默认初始值null、
public static int counter1 的counter1赋予默认初始值0、
public static int counter2 的counter2赋予默认初始值0(不是显式的0)、
然后会显式地给变量赋值:
private static Singleton singleton的singleton赋予new Singleton(),此时会执行Singleton类的构造函数:
private Singleton(){
counter1++;
counter2++;
}
counter1 = 1;
counter2 = 1;
接着给counet1、counter2显式赋值
public static int counter1 ;
public static int counter2 = 0;
由于counter1没有显式值
所以赋值完成后counter1 = 1、counter2 = 0;
最后输出为counter1 = 1、counter2 = 0;
如果把 private static Singleton singleton = new Singleton();放在 public static int counter2 = 0;的后面,则会输出counter1 = 1、counter2 = 1;
- 关于类加载的一道面试题
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于Java类加载双亲委派机制的思考(附一道面试题)
- 关于一道面试题
- 关于一道面试题
- 一道关于C++继承类的面试题
- 关于一道微软面试题的思考
- 关于一道微软面试题的解答
- 关于FOR循环的一道面试题
- 一道关于容器的面试题
- 关于一道面试题的源代码解答
- 一道关于java线程的面试题
- 一道关于JavaScript变量的面试题
- 一道关于free的面试题
- Android第一个应用程序:SayHello
- 理解js中的this对象
- 分数规划
- RGBD物体识别(5)--ubuntu同时使用OpenCV2.4.X和3.X终极解决办法
- hdu 4336 Card Collector (容斥 or dp)
- 关于类加载的一道面试题
- SVD综述和Mahout中实现
- hdu 1358 Period
- jquery自制折叠菜单
- 操作系统基础知识总结(二)
- 扩展Fibonacci数
- 如何修改eclipse中Tomcat默认的发布路径
- 造成软件复杂性的原因
- [从头学数学] 第160节 相似