• 浅谈Java中静态初始化块跟非初始化块


    众所周知在JAVA编程语言中有两种初始化块:
     
    静态初始化块
    非静态初始化块
    他们到底有什么区别呢?今天就浅谈一下JAVA中静态初始化块和非静态初始化块的区别
     
    静态初始化块
    定义:
     
            static{}
     
    执行优先级高于非静态的初始化块,它会在对象装载到系统的时候执行一次,执行完成便销毁,它仅能初始化类变量,即static修饰的数据成员。它将在类加载时被执行。
     
    执行优先级:1
     
    非静态初始化块
    定义:
     
            {}
     
    执行的时候如果有静态初始化块,先执行静态初始化块再执行非静态初始化块,在每个对象生成时都会被执行一次,它可以初始化类的实例变量。非静态初始化块会在构造函数执行时,在构造函数主体代码执行之前被运行。
     
    执行优先级:2
     
    实例:
     1 package com.Demo;
     2 public class Demo03 {
     3     String name;
     4     int age;
     5     //构造函数初始化  优先级:3
     6     public Demo03(String name,int age) {
     7         this.name=name;
     8         this.age=age;
     9         System.out.println("构造函数");
    10     }
    11     
    12     //非静态初始化  优先级:2 
    13     {
    14         System.out.println("非静态初始化");
    15     }
    16     //静态初始化  优先级:1
    17     static{
    18         System.out.println("静态初始化");
    19     }
    20     
    21     
    22     public static void main(String[] args) {
    23         Demo03 demo=new Demo03("zhangs",1);
    24     }
    25 }
    结果:
    静态初始化
    非静态初始化
    构造函数
  • 相关阅读:
    [Deep-Learning-with-Python] Keras高级概念
    [Deep-Learning-with-Python]计算机视觉中的深度学习
    求数值的n次方根
    caffe dropout解读
    Paper Mark2
    分组卷积+squeezenet+mobilenet+shufflenet的参数及运算量计算
    SSD总结
    sed例子
    Ubuntu 16.04安装MySQL设置远程访问出现问题的完美解决方案(error:10061)
    解决Python-OpenCV中cv2.rectangle报错
  • 原文地址:https://www.cnblogs.com/JamKong/p/4447082.html
Copyright © 2020-2023  润新知