zoukankan      html  css  js  c++  java
  • java中类成员初始化顺序

    java中初始化类成员方法包括:

    1.显示域初始化,比如public int a=1;public static int b=1;

    2.初始化块,分为普通初始化块,静态初始化块;

    3.构造函数。

    初始化的时候,首先是静态类的初始化方式执行,然后才是普通初始方式执行,

    并且初始化块总是先于构造函数执行,显式域初始化与初始化块的执行顺序按照代码中出现的顺序执行。

    • 显式静态域初始化先于静态初始化块
    public class Hello{
        
        public static int staticA=1;
        public static int staticB;
           
        static{
            System.out.println("Static Inital Block Start");
            staticB=2;
            PrintAB();
            System.out.println("Static Inital Block End
    ");
        }
        
        public static void PrintAB(){
            System.out.println("staticA:"+staticA);
            System.out.println("staticB:"+staticB);
        }
    
        public Hello(){
            Hello.PrintAB();
        }
    
        public static void main(String[] args){
            Hello h=new Hello();
        }
    }

    输出:

    Static Inital Block Start
    staticA:1
    staticB:2
    Static Inital Block End
     
    staticA:1
    staticB:2
    • 显式静态域初始化后于静态初始化块
    public class Hello{
        
        public static int staticB;
    
        static{
            System.out.println("Static Inital Block Start");
            staticB=2;
            PrintAB();
            System.out.println("Static Inital Block End
    ");
        }
        public static int staticA=1;
        public static void PrintAB(){
            System.out.println("staticA:"+staticA);
            System.out.println("staticB:"+staticB);
        }
    
        public Hello(){
            Hello.PrintAB();
        }
    
        public static void main(String[] args){
            Hello h=new Hello();
        }
    }

     输出:

    Static Inital Block Start
    staticA:0
    staticB:2
    Static Inital Block End
     
    staticA:1
    staticB:2
    • 显式静态域初始化与初始化块按照出现顺序执行,最后执行构造函数,

      注意noStaticD在两个构造快中间初始化,第一个初始化块打印时noStaticD=0,第二个块中变为1

    输出:

    NoStatic Inital Block for noStaticC Start
    noStaticC:1
    noStaticD:1
    noStaticE:1
    noStaticF:0
    NoStatic Inital Block for noStaticC End

    Constructor Start
    noStaticC:1
    noStaticD:1
    noStaticE:1
    noStaticF:1
    Constructor END

  • 相关阅读:
    【数字图像处理】 形态学转换
    【数字图像处理】阈值处理
    【数字图像处理】 图像平滑
    【数字图像处理】直方图均衡化
    【Tool】Augmentor和imgaug——python图像数据增强库
    [caffe] caffe训练tricks
    [Papers] Semantic Segmentation Papers(1)
    【Computer Vision】 复现分割网络(1)——SegNet
    Comet OJ
    NOI2019游记 —— 夏花般绚烂,繁星般璀璨
  • 原文地址:https://www.cnblogs.com/lvjianwei/p/9862494.html
Copyright © 2011-2022 走看看