代码块的使用

这里写图片描述

  • 局部代码块
package com.Brooke01;
/*
 * 局部代码块
 */
public class CodeBlockDemo1 {
    public static void main(String[] args) {
        //局部代码块:存在于方法中,控制变量的生命周期(作用域)
        {
            int num = 10;
            System.out.println(num);
        }

        //这边不能调用局部代码块里面的变量
        //System.out.println(num);
    }
}
  • 构造代码块
package com.Brooke01;
/*
 * 构造代码块
 */
public class CodeBlockDemo2 {
    public static void main(String[] args) {
        String name = "苍老师";
        int age = 30;
        Teacher ter1 = new Teacher();
        Teacher ter2 = new Teacher(name,age);
    }
}

class Teacher {
    String name;
    int age;
    //构造代码块,提取构造方法中的共性,每次创建对象都会执行,并且在构造方法之前执行
    {
        //提取构造方法中的共性:输出"我爱Java"
        System.out.println("我爱Java!");
    }

    //无参构造
    public Teacher() {
        //System.out.println("我爱Java!");
        System.out.println("我是无参构造");
    }

    //有参构造
    public Teacher(String name,int age) {
        this.name = name;
        this.age = age;
        //System.out.println("我爱Java!");
        System.out.println("我是有参构造");
    }
}

结果:
    我爱Java!
    我是无参构造
    我爱Java!
    我是有参构造
  • 静态代码块:
package com.Brooke01;
/*
 * 静态代码块
 */
public class CodeBlockDemo3 {
    public static void main(String[] args) {
        String name = "苍老师";
        int age = 30;
        Teacher1 ter1 = new Teacher1();
        Teacher1 ter2 = new Teacher1(name,age);
    }
}

class Teacher1 {
    String name;
    int age;

    //静态代码块:随着类的加载而加载,只加载一次,加载类时需要做的一些初始化,比如加载驱动
    static{
        //提取构造方法中的共性:输出"我爱Java"
        System.out.println("我爱Java!");
    }

    //无参构造
    public Teacher1() {
        //System.out.println("我爱Java!");
        System.out.println("我是无参构造");
    }

    //有参构造
    public Teacher1(String name,int age) {
        this.name = name;
        this.age = age;
        //System.out.println("我爱Java!");
        System.out.println("我是有参构造");
    }
}

结果:
    我爱Java!
    我是无参构造
    我是有参构造
  • 例题:
package com.Brooke01;

public class CodeBlockDemo4 {
    //CoderBlockDemo4的静态代码块
    //执行一次,随着类的加载而加载
    static {
        System.out.println("CoderBlockDemo4的静态代码块执行");
    }

    //CoderBlockDemo4的构造代码块
    //不会执行,因为只有创建对象才会执行构造代码块,显然这里没有创建CoderBlockDemo4的对象
    {
        System.out.println("CoderBlockDemo4的静态代码块执行");
    }
    public static void main(String[] args) {
        System.out.println("CodeBlockDemo4主函数执行");
        Coder c1 = new Coder();
        Coder c2 = new Coder();
    }
}

class Coder {
    //Coder的静态代码块
    //执行一次,随着类的加载而加载
    static {
        System.out.println("Coder的静态代码块执行");
    }

    //Coder的构造代码块
    //无参构造前执行
    {
        System.out.println("Coder的构造代码块执行");
    }

    //COder的无参构造
    public Coder() {
        System.out.println("Coder的无参构造执行");
    }
}

结果:
    CoderBlockDemo4的静态代码块执行
    CodeBlockDemo4主函数执行
    Coder的静态代码块执行
    Coder的构造代码块执行
    Coder的无参构造执行
    Coder的构造代码块执行
    Coder的无参构造执行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值