澳门威斯尼斯平台app还回上溯到引用的包中的类的静态初始化代码块

当前位置:澳门威斯尼斯平台app > 澳门威斯尼斯平台app > 澳门威斯尼斯平台app还回上溯到引用的包中的类的静态初始化代码块
作者: 澳门威斯尼斯平台app|来源: http://www.duongvenha.com|栏目:澳门威斯尼斯平台app

文章关键词:澳门威斯尼斯平台app,初始代码块

  代码初始化块是类的成员之一,每次类的创建会隐式的调用它。本质上是一个代码块,或方法体。

  a、静态初始化块只在对象加载的时候执行,并且只执行一次。 b、静态代码块只为静态成员变量赋初值。

  从优先级考虑,先加载静态初始化代码块,再加载初始化代码块,最后再加载构造方法。

  与构造器作用非常相似的是初始化块,它也可以对java对象进行初始化操作。

  初始化块是java中出现的第四种成员(变量、方法、构造器)一个类里可以有多个初始化块,相同类型的初始化块之间有顺序:前面定义的初始化块先执行,后面定义的初始化块后执行。语法格式如下:

  初始化代码块的修饰符只能是static,使用此修饰的代码块为静态初始化块。初始化块可以包含任何可执行性语句,包括定义局部变量、调用其他对象的方法,以及使用分支、循环语句等。

  执行结果a=9,这表明int a=9这行代码比初始化代码后执行。当java创建一个对象时,系统先为该对象的所有实例分配内存,接着程序开始对这些实例变量执行初始化,其初始化顺序为:先执行初始化代码块或声明成员变量时指定的初始化值,再执行构造器里指定的初始值。

  如果定义初始化块时使用了static修饰符,则这个初始化块就变成了静态初始化块,澳门威斯尼斯平台app也成为类初始化块。静态初始化块总比普通初始化块先执行。

  与普通初始化块类似的是,系统在类初始化阶段执行静态初始化块时,不仅会执行本类的静态初始化块,而且还会一直上溯到g.Object类(如果它包含静态代码块)先执行java.lang.Object类的静态初始化块,然后执行其父类的静态初始化块…最后才执行该类的静态代码块,经过这个过程,才完成了该类的初始化过程。

  在Java中存在代码块这一结构这一结构又主要分为普通代码块和初始化代码块两类。

  普通代码块仅出现于方法中,起到分隔不同功能代码的作用,其运行顺序依据代码块出现的先后。

  初始化代码块出现于类的主体中,澳门威斯尼斯平台app在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。

  这些初始化代码块起到了类的构造方法的作用,当无参实例化一个类的对象时,完全可以用代码块代替构造方法的位置。

  非静态初始化块隐性运行于创建类的对象时,顺序依据代码块的先后排列,且这些代码块间可以存在其他方法。也就是说在实例化这个对象时,会从类的头到尾检索一遍来运行初始化代码块。

  1.这些静态代码块运行于类的初始化方法之前,且因为其没有名称,故只会在创建对象时隐性运行一次。

  现在再说静态初始化代码块,静态初始化代码块又被称为是“类初始化代码块”,因其早在系统将类初始化时就执行了,而不是在创建对象时执行。同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。

  而且要注意的是,系统在初始化类时,不仅会初始化该类中的静态初始化代码块,还回上溯到引用的包中的类的静态初始化代码块。

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!