Java学习笔记-初始化块

初始化块

  • 功能

    实现和构造器一样的功能,对 对象进行初始化操作。

初始化块 相当于一种成员,一个类里可以有多种初始化块,语法格式如下:

修饰符
{
    //初始化的可执行代码...
}

初始化的修饰符只有static关键字,写上static修饰符的初始化块被称为类初始化块(静态初始化块),没有static修饰的初始化块被称为实例初始化块(非静态初始化块)。初始化块里的代码可以包含任何可执行性语句,包括定义局部变量、调用其他对象的方法,以及使用分支,循环语句等。

package day6;

public class Person
{
    {
        int a=6;
        if(a>4)
            System.out.println("Person实例初始化块:局部变量a的值大于4");
        System.out.println("Person的实例初始化");
    }
    {
        System.out.println("Person的第二个实例化初始块");
    }
    public Person()
    {
        System.out.println("Person类的无参数构造器");
    }
    public static void main(String [] args)
    {
        new Person();
    }
}

运行结果:Person实例初始化块:局部变量a的值大于4
Person的实例初始化
Person的第二个实例化初始块
Person类的无参数构造器

从运行结果可以看出,当创建Java对象时,系统总是先调用该类里定义的实例初始化块,如果一个类里定义了2个实例化初始化块,则前面定义的初始化块总是先执行,后面定义的实例初始化块后执行。

初始化块虽然也是Java的一种成员,但他没有名字,也就没有标识,因此无法通过类、对象来调用初始化块。实例初始化块只在创建Java对象时隐式执行,而且在构造器执行之前自动执行,类初始化则在类初始化阶段自动执行。

  • 初始化块&&&构造器

    package day6;
    
    public class InstanceInitTest
    {
        {
            a=6;
        }
        int a=9;
    
        public static void main(String[] args) {
            System.out.println(new InstanceInitTest().a);
        }
    }
    
    

    这里输出的结果是9,说明int a=9;语句在初始化块执行之后

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

  • 实例初始化和构造器

    实例初始化对于无参数的初始化较为方便,可以将无参数的都写进实例初始化块里,而有参数的写进构造器里,提高整个程序的可维护性。

  • 类初始化块

    标志:使用了static修饰符

    类初始化块负责对类进行初始化,而不是在创建对象时才执行。

    类初始化总是比实例初始化先执行。

    类初始化块是类相关的,用于对整个类进行初始化处理,通常用于对类变量执行初始化处理。类初始化块不能对实例变量进行处理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值