java变量初始化顺序_java 变量初始化顺序思考

前两天网易的笔试把大家都虐的不行呀哈哈。

咳咳,还是言归正传,话说之间觉得java的对象类这一块掌握的还算OK的,仔细思考,发现还是有很多细节问题没有深入思考。

上代码~

1 public class B extendsA {2 public int m =method3();3 public static int n =method4();4 public int t = 0;5

6 publicB() {7 System.out.println(4);8 }9

10 public intmethod3() {11 System.out.println(5);12 return 5;13 }14

15 public static intmethod4() {16 System.out.println(6);17 return 6;18 }19

20 public static voidmain(String[] args) {21 //TODO Auto-generated method stub

22 System.out.println(7);23 A a = newB();24 }25 }26

27

28 public classA {29 public int i =method();30 public static int j =method2();31 public int k = 0;32 publicA() {33 System.out.println(1);34 }35 public intmethod() {36 System.out.println(2);37 return 2;38 } 39 public static intmethod2() {40 System.out.println(3);41 return 3;42 }43 }

将上述代码运行,显示的结果是:

3

6

7

2

1

5

4

一步一步的运行代码,便可从中了解初始化的顺序:

1.对父类的静态(static)变量初始化,对子类的静态变量初始化;依次输出3,6;

2.运行main函数,执行System.out.println(7);语句;输出7;

3.执行A a = new B();语句;

4.执行上一条语句会导致如下操作:

4.1转入到父类A构造方法,在执行父类构造方法的语句之前会依次初始化父类里面的普通变量;在初始化i时,输出2;

4.2执行父类A构造方法里面的语句;输出1;

4.1转入子类B构造方法,在执行子类构造方法的语句之前会依次初始化子类里面的普通变量;在初始化m时,输出5;

4.2执行子类B构造方法里面的语句;输出4;

对上面的输出顺序我们可以做一个总结

1.静态变量会在最先进行初始化;

2.在new一个新的对象时,会先处理父类的语句,再处理子类的语句;

2.调用构造函数,会先对类里面的普通变量进行初始化,再执行构造函数里面的语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值