java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java程序初始化顺序

Java 程序初始化顺序

作者:.小柱.

这篇文章主要介绍了Java 程序初始化顺序,在Java语言中,当实例化对象时,对象所在类的所有成员变量首先要进行初始化,只有当所有的类成员完成了初始化之后,才会调用对象所在类的构造函数创建对象,需要的朋友可以参考一下

Java程序的初始化一般遵循三个原则(优先级依次递减):

Java程序初始化工作可以在许多不同的代码块中完成(例如静态代码块,构造函数等),它们的执行顺序如下:

  1. 父类静态变量
  2. 父类静态代码块
  3. 子类静态变量
  4. 子类静态代码块
  5. 父类非静态变量
  6. 父类非静态代码块
  7. 父类构造函数
  8. 子类非静态变量
  9. 子类非静态代码块
  10. 子类构造函数。

下面给出一个不同模块初始化时执行顺序的一个例子:

class Base{
           static {
                System.out.println("Base static block");

                     }

           public Base(){
           System.out.println("Base constructor");

           }

 public class Derived extends Base{
           static{
          System.out.println("Drevied static block");

                     }

            {
          System.out.println("Drevied  block");

           }

 public  Derived(){
          System.out.println("Drevied  constructor");

          }

public static void main(String args[]){
                new Derived();

          }

          }

先自己利用上面给出的执行顺序进行判断:

程序的运行结果为:

Base static block

Derived static block

Base block

Base constructor

Derived block

Derived constructor

怎么样,运行结果是否与你的结果一致呢?

最后,我们再来看一道面试真题:

下列代码运行结果是什么?

  class B extends Object{
          static{
          System.out.println("Load B1");

                     }

         public  B(){
          System.out.println("Create B");

          }

           static{
          System.out.println("Load B2");

           }

           }

class A extends B{
          static{
          System.out.println("Load A");

                     }

         public  A(){
          System.out.println("Create A");

          }

          }

          public class Testclass{
          public static void main(String[ ] args){
                        new A();

          }

          }

运行结果是:

Load B1      LoadB2      Load A     Create B     Create A

在面试中出现的执行顺序的问题,无非也就是把上面的代码再换几个形式,但,万变不离其宗,只要掌握它的执行顺序的规律,所有问题就都可以迎刃而解了

到此这篇关于Java 程序初始化顺序的文章就介绍到这了,更多相关Java程序初始化顺序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文