类的初始化和对象的初始化

类的初始化格式:static{<--系列语句>}

当java程序运行时,需要某个类,但该类还没有装入内存,则java将类装入内存,然后立即执行类中定义的类初始化块,执行次序就是类初始化块定义的次序。

public class Test{

  static {System.out.println("Hello");}

}

 

程序运行的结果如下:

Hello

Exception in thread "main"java.lang.NoSuchMethosError:main

 

对象的初始化格式:{<--系列语句>}

当java程序运行时,需要某个类,但该类还没有装入内存,则java将类装入内存,然后立即执行类中定义的类初始化块,执行次序就是类初始化块定义的次序,然后执行对象初始化块,执行次序是定义的次序,最后执行类的构造函数,继续对对象进行初始化。

 

class A{
 public A(){System.out.println("A的构造函数");}
 {System.out.println("A的动态初始化块");}
 static {System.out.println("A的静态初始化块");}
}

class B extends A{
 public B(){System.out.println("B的构造函数");}
 {System.out.println("B的动态初始化块");}
 static {System.out.println("B的静态初始化块");}
}

public class Test4{
 public static void main(String[] args){
  System.out.println("第一次生成类B的对象时输出:");
  new B();
  System.out.println("第二次生成类B的对象时输出:");
  new B();
 }
}

 

程序运行结果如下:

第一次生成类B的对象时输出:
A的静态初始化块
B的静态初始化块
A的动态初始化块
A的构造函数
B的动态初始化块
B的构造函数
第二次生成类B的对象时输出:
A的动态初始化块
A的构造函数
B的动态初始化块
B的构造函数

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值