静态代码块执行顺序.docVIP

  • 2
  • 0
  • 约2.74千字
  • 约 6页
  • 2017-12-27 发布于河南
  • 举报
静态代码块执行顺序

静态代码块执行顺序 之前被面试问到父子类静态代码块、非静态代码块、构造函数 一直以来我我认为这三者的执行顺序是静态代码块、非静态代码块、构造函数。 网上搜了下也都是这么说的。 就像下面这段代码: Java代码 1.public class ExA { 2. static { 3. System.out.println(父类--静态代码块); 4. } 5. 6. public ExA() { 7. System.out.println(父类--构造函数); 8. } 9. 10. { 11. System.out.println(父类--非静态代码块); 12. } 13. 14. public static void main(String[] args) { 15. new ExB(); 16. } 17.} 18. 19.class ExB extends ExA { 20. static { 21. System.out.println(子类--静态代码块); 22. } 23. { 24. System.out.println(子类--非静态代码块); 25. } 26. 27. public ExB() { 28. System.out.println(子类--构造函数); 29. } 30.} public class ExA { static { System.out.println(父类--静态代码块); } public ExA() { System.out.println(父类--构造函数); } { System.out.println(父类--非静态代码块); } public static void main(String[] args) { new ExB(); } } class ExB extends ExA { static { System.out.println(子类--静态代码块); } { System.out.println(子类--非静态代码块); } public ExB() { System.out.println(子类--构造函数); } } 执行结果 ===== 父类--静态代码块 子类--静态代码块 父类--非静态代码块 父类--构造函数 子类--非静态代码块 子类--构造函数 可是静态代码块真的会一定在非静态代码块之前执行吗? 下面这段代码 Java代码 1.public class ExA { 2. private static ExA a = new ExA(); 3. static { 4. System.out.println(父类--静态代码块); 5. } 6. 7. public ExA() { 8. System.out.println(父类--构造函数); 9. } 10. 11. { 12. System.out.println(父类--非静态代码块); 13. } 14. 15. public static void main(String[] args) { 16. new ExB(); 17. } 18.} 19. 20.class ExB extends ExA { 21. private static ExB b = new ExB(); 22. static { 23. System.out.println(子类--静态代码块); 24. } 25. { 26. System.out.println(子类--非静态代码块); 27. } 28. 29. public ExB() { 30. System.out.println(子类--构造函数); 31. } 32.} public class ExA { private stati

文档评论(0)

1亿VIP精品文档

相关文档