Java成员变量初始化
来源:互联网 发布:武侠大宗师源码外网 编辑:程序博客网 时间:2024/05/16 10:41
Java按如下原则进行成员变量初始化:
1、先执行static修饰的成员(static变量、static代码块,两者优先级按代码次序);【前提是static修饰的成员还未初始化,若已初始化,不再初始化,即static修饰的成员只执行一次初始化】
2、然后再是非静态成员变量(包含非静态实例初始化)(非静态成员变量初始化次序按代码次序);
3、最后是构造方法;
4、先父类,再子类。
注意:第“4”点意思是指:按1、2、3的顺序初始化,并且,1中先父类再子类,2中先父类再子类,3中先父类再子类。
看代码:
public class Test { Test() {i = f(100);} static{ System.out.println("Test()"); } int f(int n){return n;} int g() {return 11;} int i = g(); int j = f(i); public static void main(String[] args){ Test a = new Test(); System.out.println(a.i+","+a.j); new B(); }} class A{ static{ System.out.println("A()"); } A(){ System.out.println("Father"); }} class B extends A{ static int a = 1,b = 1; int d = 1; static{ b = 2; int c = 2; System.out.println("B()"); System.out.println("a:"+a+",b:"+b+",c:"+c); } B(){ System.out.println("Child"); System.out.println("a:"+a+",b:"+b); System.out.println("d:"+d); }}
再看代码:
public class Test { Test() {i = f(100);} static{ System.out.println("Test()"); } int f(int n){return n;} int g() {return 11;} int i = g(); int j = f(i); public static void main(String[] args){ Test a = new Test(); System.out.println(a.i+","+a.j); new B(); }} class A{ static{ System.out.println("A()"); } A(){ System.out.println("Father"); }} class B extends A{ int d = 1; { System.out.println("B()"+d); //此处为非静态实例 } static{ b = 2; int c = 2; int dd = 2; System.out.println("Child"); System.out.println("B()"); //System.out.println("a:"+a+",b:"+b+",c:"+c+",dd:"+dd);会报错,应该如下: //仔细对比以下两行 System.out.println("a:"+B.a+",b:"+B.b+",c:"+c+",dd:"+dd); System.out.println("a:"+B.a+",b:"+B.b+",c:"+c+",dd:"+B.dd); } static int a = 1, b = 1, dd; B(){ System.out.println("a:"+a+",b:"+b); System.out.println("d:"+d); }}
0 0
- Java成员变量初始化
- JAVA成员变量初始化
- JAVA之成员变量初始化
- java成员变量初始化顺序
- Java成员变量的初始化
- Java成员变量的初始化
- Java成员变量初始化顺序
- 【转】Java基础:Java成员变量初始化
- Java类成员变量的初始化顺序
- java类成员变量的初始化顺序
- Java类成员变量的初始化顺序
- Java学习笔记(成员变量的初始化)
- Java学习笔记(成员变量初始化补充)
- java成员变量的初始化顺序
- 深度思考Java成员变量的初始化
- 深度思考Java成员变量的初始化
- Java中成员变量的初始化过程
- 深度思考Java成员变量的初始化
- 24 Swap Nodes in Pairs
- Xcode7 beta4 相关问题
- 如何让搜索引擎抓取AJAX内容?
- HDU 5351 MZL's Border
- 【Qt OpenGL教程】16:看起来很酷的雾
- Java成员变量初始化
- 将csv格式数据导入MySql数据库
- linux下c语言实现简单----线程池
- MZL's City(网络流)
- 【HDU1503】【Advanced Fruits】
- An unexpected error has been detected by Java Runtime Environment
- UVA - 11478 Halum(差分约束系统)
- Java NIO原理图文分析及代码实现
- JS获取一个月的最后一天