美文网首页
Java 静态初始化块

Java 静态初始化块

作者: pioneerz | 来源:发表于2017-06-27 15:56 被阅读9次

    Java中初始化块分为两种:
    1.非静态初始化块

    非静态初始化块.png
        2.静态初始化块。
    
    静态初始化块.png
        注意:
            静态初始化块只在类加载的时候执行,且只执行一次,同时静态初始化块只能给静态成员变量赋值,    不能给普通的成员变量赋值。要想给普通成员变量赋值,可以使用非静态代码块或者构造函数。这些初始化块都是在构造函数之前执行的。
    

    下面我们看一段代码:

    public class Utils {
        private int age;
        private String sex;
        private static String name;
        private static final String TAG = "MainActivity";
        static {
            Log.e(TAG,"初始化name");
            name = "author";
        }
        public Utils() {
            Log.e(TAG,"初始化age");
            age = 24;
        }
        {
            Log.e(TAG,"初始化sex");
            sex = "男";
        }
    }
    

    调用:

    Utils utils = new Utils();
    Log.e(TAG,"===================");
    Utils utils1 = new Utils();
    

    输出结果为:

    06-27 15:20:49.534 15103-15103/? E/MainActivity: 初始化name
    06-27 15:20:49.534 15103-15103/? E/MainActivity: 初始化sex
    06-27 15:20:49.534 15103-15103/? E/MainActivity: 初始化age
    06-27 15:20:49.534 15103-15103/? E/MainActivity: ===================
    06-27 15:20:49.534 15103-15103/? E/MainActivity: 初始化sex
    06-27 15:20:49.534 15103-15103/? E/MainActivity: 初始化age
    

    从输出结果中,我们可以看到首先会去执行静态初始化块,而且只会执行一次,然后会去执行非静态初始化块,而且他们都在构造方法之前执行。如果有多个同类型的初始化块,则会按照从上到下的顺序一次执行,你们可以试试看。

    相关文章

      网友评论

          本文标题:Java 静态初始化块

          本文链接:https://www.haomeiwen.com/subject/epjecxtx.html