zoukankan      html  css  js  c++  java
  • Java中类初始化的顺序

    在创建对象时,对象所在类的所有数据成员会首先进行初始化,如果其中的成员变量有对象,那么它们也会按照顺序执行初始化工作。在所有类成员初始化完成后,才调用对象所在类的构造方法创建对象。构造方法作用就是初始化。
    静态对象(变量)在非静态对象前初始化。静态对象(变量)只初始化一次,再次调用就不初始化了,但非静态对象在每次调用时都要初始化。
    程序中的主类的静态变量会在main()方法执行前进行初始化工作。
    不仅第1次创建对象时,类中所有的静态变量要初始化,第1次访问类中的静态变量(没有创建对象)时,该类中所有的静态变量也要按照它们在类中排列的顺序初始化。
    初始化的顺序包括构造方法调用的顺序如下:
    1. 主类的静态成员首先初始化。
    2. 主类的超类的构造方法按照从最高到最低的顺序被调用。
    3. 主类的非静态对象(变量)初始化。
    4. 调用主类的构造方法。
    在一个构造方法中只能调用一次其它的构造方法,并且调用构造方法的语句必须是第一条语句。

    class One
    {
    public One(String str)
    {
    System.out.println(str);
    }
    }
    class Two
    {
    One one_1 = new One("one-1");
    One one_2 = new One("one-2");
    static One one_3 = new One("one-3");
    public Two(String str)
    {
    System.out.println(str);
    }
    }
    public class Test
    {
    static Two two_3 = new Two("two-3");
    public static void main(String[] args)
    {
    System.out.println("Test main() start...");
    Two two_1 = new Two("two-1");
    System.out.println("------------");
    Two two_2 = new Two("two-2");
    }
    }

    one-3
    one-1
    one-2
    two-3
    Test main() start...
    one-1
    one-2
    two-1
    -------------
    one-1
    one-2
    two-2

     
  • 相关阅读:
    指定HTML标签属性 |Specifying HTML Attributes| 在视图中生成输出URL |高级路由特性 | 精通ASP-NET-MVC-5-弗瑞曼
    传递额外的值 Passing Extra Values |在视图中生成输出URL | 高级路由特性 | 精通ASP-NET-MVC-5-弗瑞曼
    以其他控制器为目标 在视图中生成输出URL
    数组与指针(数组中所有元素的和)
    OC中的指针
    UIScrollView创建相册
    开发之UI篇
    TabBarController
    适配ipone5
    NSDate 哪些事
  • 原文地址:https://www.cnblogs.com/encounter/p/2189318.html
Copyright © 2011-2022 走看看