本文主要是介绍Thinking in Java [Java编程机制] 学习笔记 -- 初始化顺序Order of initialization,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
首先
初始化的顺序和变量声明的顺序有关,并且变量(包括primitive types and object reference)的初始化一定是在所有方法被调用之前,甚至constructor也要在此之后。
静态数据初始化 static data initialization
所有的静态数据都存储在一片存储区中,初始化也只会进行一次。初始化顺序是这样的:1.static(如果已经初始化过了,则不会重复初始化)2.non-static
但是书上有一句话是这么讲的"Static data are initialized only when the first XX object is created or the first static access occurs"也就是说,在没用必要初始化static变量时,不会对其初始化,没有必要是指没有创建某个类的对象,或者没有使用Class.staticVariable访问的情况。
显式的静态语句初始化explicit static initialization
语法:
static {
// Clauses...
// Clauses...
}
其初始化的顺序和static变量是一样的,只要创建该类对,或者某个访问到该类中某个static变量,显式的静态域中语句便会被触发
非静态实例初始化 non-static instance initialization
语法:
{
clauses...
}
instance initialization总是在构造函数调用之前完成括号内的语句。
这篇关于Thinking in Java [Java编程机制] 学习笔记 -- 初始化顺序Order of initialization的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!