java中的初始化块

简介: public class Person {   int a=6;//声明实例变量制定默认值,也可以认为是对象的初始化代码,执行顺序与源代码中的排列顺序相同 {   System.
public class Person
{
   int a=6;//声明实例变量制定默认值,也可以认为是对象的初始化代码,执行顺序与源代码中的排列顺序相同 {   System.out.println("Person初始化块"); }
  {
    a=9;
    if(1)
    {     System.out.println("Person第二个初始化块");
    } }

  public Person()
  {
    System.out.println("Person无参构造器");  
  }
  public static void main(String[] args)
  {
    new Person();
    System.out.println(new Person().a);//a=9

  }
}

程序运行结果:

Person初始化块
Person第二个初始化块
Person无参构造器

从结果可以看出,当创建java对象时,系统总是先调用该类的初始化块。如果一个类中有多个普通初始化块,按定义的先后顺序执行。

:初始化块总是在构造器之前执行。

 

静态初始化块:用static修饰,又叫类初始化块。初始化块只能用static修饰。

与普通初始化块(没有修饰符修饰)的区别是:

  普通初始化块负责对对象初始化;

  静态初始化块负责对类进行初始化。它通常对类变量执行初始化处理,不能对实例变量进行初始化处理。

系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行(这时执行普通初始化块)。因此静态初始化块总比普通初始化块先执行。

 

  系统在类初始化阶段执行静态初始化块时,首先一直追溯到java.lang.Object类(如果包含静态初始化块),限制性java.lang.Object类的静态初始化快(如果有),然后执行父类的静态初始化快……最后执行该类的静态初始化块,经过这个过程才完成类的初始化。普通初始化块也类似。

 

目录
相关文章
|
Java 编译器 Go
25、Java 初始化块和静态初始化块详解,超详细(案例多、官方教程)
25、Java 初始化块和静态初始化块详解,超详细(案例多、官方教程)
522 1
Java的初始化块
初始化块是一种初始化数据域的方法。
121 0
|
Java 编译器 Go
第25篇:Java 初始化块和静态初始化块详解,超详细(案例多、官方教程)
📜 私有静态方法初始化类变量的好处是:如果你需要重新为类变量进行初始化的时候,私有静态方法可以被重复使用
237 0
第25篇:Java 初始化块和静态初始化块详解,超详细(案例多、官方教程)
|
存储 设计模式 Java
第18篇:Java的类变量、类方法;static 关键字;静态导入;初始化块;静态初始化块;单例模式
☘️ 被static修饰的成员变量可叫做:类变量、静态变量、静态字段 ☘️ 类变量在程序运行过程中只占用一份固定的内存(存储在方法区) ☘️ 可通过类名访问 ☘️ 可通过引用变量名访问(不推荐)
183 0
第18篇:Java的类变量、类方法;static 关键字;静态导入;初始化块;静态初始化块;单例模式
Java 初始化块详解
Java 初始化块详解
225 0
Java 初始化块详解
|
Java 程序员
教妹学Java(三十四):代码初始化块
教妹学Java(三十四):代码初始化块
160 0
Java 中的 static 使用之静态变量·静态方法·静态初始化块
Java 中的 static 使用之静态变量 大家都知道,我们可以基于一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立。然而在某些时候,我们更希望该类所有的对象共享同一个成员。
|
16天前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
49 0