初始化块(非静态)

一:初始化块——非静态初始化块
   变量的赋值,有两种常用的方式。
   1:变量声明中赋值。
   2:构造函数中赋值。
   事实上,java提供了第三种机制——初始化块。
 
  例如:
class InitBlock {
 //构造函数赋值
 public InitBlock() {
  //对另一构造函数的调用,且必须为第一行
  this("fff",300);
  bi = 200;
  str1 = "abc";
  System.out.println("constructor method A");
 }
 //构造函数赋值
 public InitBlock(String str,int b) {
  this.bi = b;
  this.str1 = str;
  System.out.println("constructor method B");
 }
 //初始化块
 //初始化块赋值
 {
     bi = 100;
     str1 = "string";
     b = 180;
     System.out.println("init block~~~~");
 }
 //初始化块
 {
  System.out.println("second");
 }
 
 private int bi;
 private String str1;
 private int ab = 10;//声明中赋值
 private static int b;
 
 public static void main(String[] args) {
  InitBlock ib = new InitBlock();
  System.out.println("bi = "+ib.bi);
  System.out.println(InitBlock.b);
 }
}

 
 关于初始化块:
 a.一个类可以有多个非静态初始化块初始化块,按照初始化块的顺序执行。
 
 b.非静态初始化块是在构造类对象时执行,先执行初始化块,再执行构造主体部分。
 
 c:非静态初始化块能对静态变量,实例变量进行初始化
 
 构造器的具体处理步骤:
 1)所有数据域被初始化为默认值(0、false或null)。

2)按照在类声明中出现的次序,依次执行所有域初始化语句和初始化块。

3)如果构造器第一行调用了第二个构造器,则执行第二个构造器主体。

4)执行这个构造器的主体。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值