【代码块】基本介绍

目录

一、构造代码块

二、静态代码块

三、局部代码块


基本介绍:代码块就是使用{} 包裹的一段代码,只不过在不同的位置,功能不一样。代码块没有方法名,没有返回,没有参数,只有方法体,代码块通过加载类或创建对象时隐式调用。

代码块基本语法:

                [修饰符]{

                        代码片段

                };

注意点:修饰符一般不写,如果写只能写static,加上static就是静态代码块,最后的分号也可以省略。

一般代码块分成三种:构造代码块、静态代码块、局部代码块。

一、构造代码块

        为什么叫构造代码块呢?因为它的执行与一个类的构造函数挂钩,它定义在类的方法之外,单独一个{},它会随着构造方法的执行而执行。

public class Student {
    public static void main(String[] args) {
        Student student = new Student();        //执行空构造方法
        System.out.println("_______________");
        Student student1 = new Student(18);      //执行有参构造
    }





    private int age;

    {
        System.out.println("构造代码块" );        //构造代码块
        age = 100;
    }

    public Student(){
        System.out.println("Student()" );
    }

    public Student(int age) {
        System.out.println("Student(int age)" );
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                '}';
    }
}

从运行结果可以看出,每次调用Student类的构造方法之前,都会调用构造代码执行

二、静态代码块

        静态代码块,它的访问修饰符是static,它会随着类的加载执行,并且它内部的东西只存了一份。

public class Student {
    public static void main(String[] args) {
        Student student = new Student();
        System.out.println("_______________");
        Student student1 = new Student(18);
    }

    private int age;

    static {
        System.out.println("静态代码块" );
    }

    public Student(){
        System.out.println("Student()" );
    }

    public Student(int age) {
        System.out.println("Student(int age)" );
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                '}';
    }
}

运行结果如下,它会随着类的加载而执行,并且只会执行一次

三、局部代码块

        局部代码块,一般定义在方法内,它与方法中的局部变量是处于不同的代码块中,所以他们的定义互不影响,甚至可以重名。

public class Student {
    public static void main(String[] args) {
        test();
    }
    public static void test(){
        int a = 1;
        // 局部代码块!!
        {
            System.out.println("局部代码块: "+a );
            int b = 2;
        }
        int b = 2;
    }
    private int age;

    public Student(){
        System.out.println("Student()" );
    }

    public Student(int age) {
        System.out.println("Student(int age)" );
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "age=" + age +
                '}';
    }
}

运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值