Java对象初始化顺序
来源:互联网 发布:u8用友软件介绍 编辑:程序博客网 时间:2024/04/30 11:27
一:函数public static void main(String[] args)作为程序的入口,在执行时对于该类, 会先加载该类的静态对象/静态域/静态变量,然后进入该函数执行(毕竟没有用new创建该类的对象,因此不会加载非静态对象/非静态变量以及构造函数)
二:初始化一个类时,即用new创建一个类时,初始化顺序
1,按顺寻初始化一个类中的静态对象/静态域/静态变量(当首次生成这个类的一个对象时,或者首次访问属于那个类的静态数据成员时,静态初始化都初始化一次)
2,按顺序初始化一个类中的非静态对象/非静态变量
3,初始化构造函数
在初始化一个对象时,要对定义对象的类进行初始化操作(按上面三个步骤)
初始化一个对象前,应先初始化其父类
结果:
test2 f()
0
test1
test2
test2 f()
0
test1
test2
test
end
二:初始化一个类时,即用new创建一个类时,初始化顺序
1,按顺寻初始化一个类中的静态对象/静态域/静态变量(当首次生成这个类的一个对象时,或者首次访问属于那个类的静态数据成员时,静态初始化都初始化一次)
2,按顺序初始化一个类中的非静态对象/非静态变量
3,初始化构造函数
在初始化一个对象时,要对定义对象的类进行初始化操作(按上面三个步骤)
初始化一个对象前,应先初始化其父类
参考下面程序:
public class test {int a = 0;test1 t = new test2();static test1 t1 = new test2();test(){System.out.println("test");a = 8;} void f() { System.out.println("test f()"); System.out.println(a); }; public static void main(String[] args){new test();System.out.println("end");}}
class test2 extends test1 {int a = 0;test2() {a = 8;System.out.println("test2");}void f() {System.out.println("test2 f()");System.out.println(a);};}
abstract class test1 {test1(){f();System.out.println("test1");}abstract void f() ;}
结果:
test2 f()
0
test1
test2
test2 f()
0
test1
test2
test
end
0 0
- JAVA对象初始化顺序
- java对象初始化顺序
- Java 对象初始化顺序
- Java对象初始化顺序
- Java对象初始化顺序
- Java 对象初始化顺序
- Java 对象初始化顺序
- Java对象初始化顺序
- java对象初始化顺序
- java对象初始化顺序
- Java对象初始化顺序
- Java对象初始化顺序
- java对象初始化顺序
- java对象初始化顺序
- Java 对象初始化顺序
- Java对象初始化顺序
- Java对象初始化顺序
- Java对象初始化顺序
- 【Android】存储选项详解
- Tinker使用过程及注意点(1)-环境搭建及简单使用
- DeepLab:深度卷积网络,多孔卷积 和全连接条件随机场 的图像语义分割 Semantic Image Segmentation with Deep Convolutional Nets, Atro
- 在hbuilder中利用xdebug helper 断点调试php
- scikit-learn的基本用法(四)——数据归一化
- Java对象初始化顺序
- 线程如何获取另外主动退出的线程的传出指针
- leetcode 491. Increasing Subsequences & lc 78. Subsets
- 【Codeforces 803 A】+ 构造
- 求最近点对
- 教你用webgl快速创建一个小世界
- Java设计模式—观察者模式
- 【软考】后缀式
- Win10无法安装.NET Framework 3.5