知识点

Java-----代码块

2021-12-21  本文已影响0人  会写代码的小猿猴

什么是代码块

在Java中, 使用{ }括起来的代码被称为代码块,可分为局部代码块、构造代码块、 静态代码块。

局部代码块

位置:方法中定义
作用:限定变量的生命周期,及早释放,提高内存利用率
局部代码块在方法内部进行定义,在该代码块内部定义的变量作用范围也仅限于代码块内部,在代码块外部是无法访问代码块内部定义的变量的。
demo:

public class Test {
    public static void main(String[] args) {
        {
            int a=10;
            System.out.println(a);
        }
        System.out.println(a);
    }
}

上面这段代码是无法执行的,第二个输出语句会报错,因为它在代码块外部无法访问代码块内部的变量,自然无法输出a的值。

构造代码块

位置:类中方法外定义
特点:每次构造方法执行的时,都会执行该代码块中的代码,并且在构造方法执行前执行
作用:将多个构造方法中相同的代码,抽取到构造代码块中,提高代码的复用性
demo:

public class Test {
    public static void main(String[] args) {
        Student s1=new Student();
        Student s2=new Student(2);
    }

}

class Student{
    {
        System.out.println("这是构造代码块");
    }
    public Student(){
        System.out.println("这是空参构造方法");
    }
    public Student(int a){
        System.out.println("这是有参参构造方法");
    }
}

执行结果:


image.png

结合代码和执行结果可以看到,每次创建对象时都会执行构造代码块,并且它在构造方法之前执行。

静态代码块

位置:类中方法外定义
特点:需要通过static关键字修饰,随着类的加载而加载,只执行1次
作用:在类加载的时候做一些数据初始化的操作
demo:

public class Test {
    public static void main(String[] args) {
        Student s1=new Student();
        Student s2=new Student(2);
    }

}

class Student{
    static {
        System.out.println("这是静态代码块");
    }
    public Student(){
        System.out.println("这是空参构造方法");
    }
    public Student(int a){
        System.out.println("这是有参参构造方法");
    }
}

执行结果:


image.png

静态代码块需要用static修饰,我们知道static修饰的变量会随着类的加载而加载,由于类文件只加载一次,所以static修饰的变量也只会加载一次,这个规则在static修饰代码块时依然适用,所以静态代码块会随着类文件的加载而加载,并且只加载一次。

上一篇 下一篇

猜你喜欢

热点阅读