zoukankan      html  css  js  c++  java
  • java的初始化

    1.初始化


    1.1 初始化条件:  "initialize on first active use"--" 在首次主动使用时初始化"。

    (1). 使用new关键字时        例如 User user = new User()

    (2). 初次使用该类的静态成员时      例如 User.name

    (3). 使用该类的导出类时

    2.初始化顺序


    2.1 java初始化顺序

    (1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法)
    (2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 )
    (3) 父类非静态代码块( 包括非静态初始化块,非静态属性 )
    (4) 父类构造函数
    (5) 子类非静态代码块 ( 包括非静态初始化块,非静态属性 )
    (6) 子类构造函数
     1 public class Test {
     2     public static void main(String[] args) {
     3         Sub sub = new Sub();
     4     }
     5 }
     6 
     7 class Super {
     8     static {
     9         System.out.println("Super.static.area");
    10     }
    11 
    12     private int a = 2;
    13     private int b = 1;
    14 
    15     Super() {
    16         System.out.println("Super() a: " + a);
    17         System.out.println("Super() b: " + b);
    18         method();
    19     }
    20 
    21     void method() {
    22         System.out.println("Super.method");
    23     }
    24 }
    25 
    26 class Sub extends Super {
    27     static {
    28         System.out.println("Sub.static.area");
    29     }
    30 
    31     private int b = 2;
    32 
    33     Sub() {
    34         System.out.println("Sub() b: " + b);
    35         method();
    36     }
    37 
    38     @Override
    39     void method() {
    40         System.out.println("b: " + b);
    41     }
    42 }output:
    43 Super.static.area
    44 Sub.static.area
    45 Super() a: 2
    46 Super() b: 1
    47 b: 0
    48 Sub() b: 2
    49 b: 2

    3.初始化原理


    上面仅仅是初始化的结果,为什么要这要初始化?

    先立一个flag在这里,等看了jvm后再写

    1_thumb

    4.reference

    https://www.ibm.com/developerworks/cn/java/j-lo-clobj-init/

    https://www.nowcoder.com/test/question/done?tid=8188278&qid=3212#summary

  • 相关阅读:
    装饰器
    初始面向对象
    生成器迭代器
    初识函数
    文件操作
    数据类型补充

    集合 元祖 字典
    Python练习题 034:Project Euler 006:和平方与平方和之差
    Python练习题 033:Project Euler 005:最小公倍数
  • 原文地址:https://www.cnblogs.com/maying3010/p/5939893.html
Copyright © 2011-2022 走看看