Java学习笔记 - 构造函数以及代码块

构造函数本质和iOS没什么区别,但是引入了代码块的概念是以前不知道的

代码块的类别:

1、构造代码块

  •  写在类中,构造代码块的大括号必须位于成员位置上
  • 执行过程中,先执行构造代码块中的代码,再执行构造函数
    构造 代码块要注意的事项:
        1. java编译器编译一个java源文件的时候,会把成员变量的声明语句提前至一个类的最前端。
        2. 成员变量的初始化工作其实都在在构造函数中执行的。
        3. 一旦经过java编译器编译后,那么构造代码块的代码块就会被移动构造函数中执行,是在构造函数之前执行的,构造函数的中代码是最后执行 的。
        4. 成员变量的显示初始化与构造代码块 的代码是按照当前代码的顺序执行的。

2、局部代码块。代码块位于方法之内,作用:缩短局部变量的生命周期,节省一点点内存。

  • 局部代码块的大括号位于代码之内
  • 有一个小作用,缩短局部变量的声明周期,节省一点点内存,没其他作用

3、静态代码块 static

  • 不创建对象的时候,构造代码块是不执行的
  • 静态代码优先

PS:经过JAVA编译器后无论代码顺序如何,都会变成:

构造方法
{
      1、属性声明,直接赋值
      2、构造代码块中的代码
      3、构造方法中的代码
 }
public class CarDemo {

    public String name;


    {
        System.out.println("构造代码块执行");
        System.out.println("执行构造代码块的时候,name为:" + this.name);
    }
    static {
        System.out.println("静态代码块执行");
    }

    public static void main(String[] args){
        CarDemo.Run();
    }

    public static void Run(){
        System.out.println("执行一个静态方法");
        CarDemo car = new CarDemo("R8");
    }

    public  CarDemo(String name){
        this.name = name;
        System.out.println("构造函数调用了,name = " + this.name);
    }

    public  CarDemo(){
        System.out.println("无参数的构造函数");
    }

    public void aaa(){
        System.out.println("父类方法");
    }

}

以上代码的执行结果是:

静态代码块执行
执行一个静态方法
构造代码块执行
执行构造代码块的时候,name为:null
构造函数调用了,name = R8

结论:

  1. 执行一个静态方法的时候,优先执行静态代码块
  2. 创建一个对象的时候,构造代码块优先执行,然后才执行构造方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值