java经典面试题(类加载和初始化顺序)
来源:互联网 发布:淘宝托管多少钱一个月 编辑:程序博客网 时间:2024/06/05 06:30
public class Test { public static void main(String[] args){ SingleTon.getInstance(); System.out.println("count1=" + SingleTon.count1); System.out.println("count2=" + SingleTon.count2); }}class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; public static int count2 = 0; public int count3; public int count4 = 3; private SingleTon() { count1++; count2++; } public static SingleTon getInstance() { return singleTon; }}
打印结果:
count1=1
count2=0
分析:
1.调用SingleTon.getInstance();的时候首先加载类静态成员变量, 给静态成员
变量赋默认初始值
2.从上往下给静态成员变量赋值(即等号后面的值)
3.private static SingleTon singleTon = new SingleTon();执行后新建对象赋给singleTon
new SingleTon(); 执行顺序:1).调用构造方法里面的super();函数(即初始化父类对象)
2).会给所有的非静态变量赋默认值
3).给所有的非静态成员变量赋值(即等号后面的值),此时count3
没有重新赋值而count4重新赋值为3,然后调用构造方法
4.接着给下面的静态变量赋值count1没有可赋的值跳过他,给count2赋值为0
5.固打印count1为构造方法++之后的值为1,count2为重新赋值后的值为0
阅读全文
2 0
- java经典面试题(类加载和初始化顺序)
- Java面试题(类初始化顺序总结)
- java类加载和初始化顺序
- JAVA基础教程:类加载和初始化顺序
- java类加载和初始化顺序
- Java面试题解惑(一)--类的初始化顺序
- Java&&(面试题)初始化顺序总结
- JAVA面试题解惑系列(一)——类的初始化顺序
- JAVA面试题解惑系列(一)——类的初始化顺序
- 转载:JAVA面试题解惑系列(一)——类的初始化顺序
- JAVA面试题解惑系列(一)——类的初始化顺序
- JAVA面试题解惑系列(一)——类的初始化顺序
- JAVA面试题解惑系列(一)——类的初始化顺序
- JAVA面试题解惑系列(一)——类的初始化顺序
- JAVA面试题解惑系列(一)——类的初始化顺序
- JAVA面试题解惑系列(一)——类的初始化顺序
- JAVA面试题解惑系列(一)——类的初始化顺序
- JAVA面试题解惑系列(一)——类的初始化顺序
- ActiveMQ中关于死信的相关配置
- Word2016中添加目录
- STM32—FMSC详解
- python decorator记录
- 面向对象简单接口
- java经典面试题(类加载和初始化顺序)
- 【干货】玩运营不可不知的经典“事件营销”案例
- Spark Client和Cluster两种运行模式的工作流程
- openstack中:Failed to establish a new connection: [Errno 110] Connection timed out'
- LeetCode 13.Roman to Integer
- nodepad++快捷键
- This text field does not specify an inputType or a hint
- 堆排序
- Python标准模块——pickle