java基础知识19_构造代码块

本文介绍了Java中的构造代码块,主要用于对象的统一初始化。它位于类内、方法外,执行顺序早于构造函数。此外,还提到了局部代码块和静态代码块的区别,并通过实例说明了构造代码块的执行流程。
摘要由CSDN通过智能技术生成

构造代码块:
构造代码块的作用:给对象进行统一的初始化。
构造函数的作用: 给对应的对象进行初始化。

构造代码块的格式:

{
    构造代码块
}

注意: 构造代码块的大括号必须位于成员位置上。(即类之内、方法之外。)

代码块的类别:

  • 1、构造代码块。
  • 2、局部代码块:大括号位于方法之内。作用:缩短局部变量的生命周期,节省一点点内存。
  • 3、静态代码块: static

构造代码块要注意的事项:

  • 1、java编译器编译一个java源文件的时候,会把成员变量的声明语句提前至一个类的最前端。
  • 2、成员变量的初始化工作其实都在在构造函数中执行的。
  • 3、一旦经过java编译器编译后,那么构造代码块的代码块就会被移动构造函数中执行,是在构造函数之前执行的,构造函数的中代码是最后执行 的
  • 4、成员变量的显示初始化与构造代码块的代码是按照当前代码的顺序执行的。
  • 5、构造函数是最后执行的。(自己总结的)

举例1:

class Baby{     
    int id; //身份证    
    String  name;  //名字

    //构造代码块...
    {
        //System.out.println("构造代码块的代码执行了......");
        cry();
    }

    //带参构造函数
    public  Baby(int i , String n){
        id  = i;
        name = n;
    }

    //无参构造方法
    public Baby(){
    }

    public void cry(){
        System.out.println(name+"哇哇哭...");
    }   
}

class Demo4{
    public static void main(String[] args){
        //Baby b1 = new Baby(110,"狗娃");
        //System.out.println("编号:"+ b1.id + " 名字:"+b1.name);
        //以下大括号内是一个局部代码块
        {
        new Baby(110,"狗娃");
        new Baby(112,"狗剩");
        new Baby();
        }

        /*
        new Baby(110,"狗娃");//先调用局部代码块,再调用有参构造函数
        new Baby(112,"狗剩");//同上
        new Baby();//先调用局部代码块,再调用无参构造函数
        */
    }
}

举例2:

class Demo5 {

    int i = 100000000;   //成员变量的显初始化

    //构造代码块   //构造代码块的初始化
    {
        i = 200000000;
    }   

    //构造函数
    public Demo5(){   //构造函数
        i = 300000000;  
    }

    public static void main(String[] args) 
    {
        Demo5 d = new Demo5();
        System.out.println("i = "+d.i); //i=300000000
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值