大数据day10java篇(代码块及其执行顺序)

大数据day10java篇(代码块及其执行顺序),第1张

大数据day10java篇(代码块及其执行顺序) 代码块

在java中,使用{}括号括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程)。

局部代码块:在方法中出现,限定变量生命周期,及早释放,提高内存利用率

构造代码块:在类中方法外出现,多个构造方法方法中相同的代码存放在一起,每次调用构造都执行,并且在构造方法前执行,在创建对象时,会先执行构造代码块,后执行构造方法。构造代码块在构造方法之前,无论类中有多少个构造代码块,构造代码块之间会执行自上而下的顺序然后再执行构造方法。

静态代码块:在类中方法外出现,加了static修饰,用于给类进行初始化,在加载的时候就执行,并且只执行一次,静态随着类的加载而加载,当运行类的时候,已经加载到内存里去,相当于静态代码块已经执行过了,所以静态代码块总是优先于其他代码块执行的,静态代码块只能走一次,无论new了多少次,只能执行一次。

案例:

我们写一个java程序,在里面写上静态代码块,构造代码块,局部代码块,构造方法,并在代码块里面写一个输出语句,表示正在输出该类型的代码块或者方法,来看一下执行的顺序。

class  Student{
    static{
        System.out.println("这是Student类中的静态代码块");//3
    }
    {
        System.out.println("这是Student类中构造代码块");//4
    }
    Student(){
        System.out.println("这是Student类中无参构造方法");//5
    }
}

public class CodeText {
    static {
        System.out.println("这是CodeText中的静态代码块");//1
    }

    public static void main(String[] args) {
        {
            System.out.println("这是CodeText中的局部代码快");//2
        }
        Student student = new Student();
    }
}

如上,我们写了一个Student类和一个CodeText测试类,并在这两个类中分别定义了一些代码块和方法,那么我们在执行的时候,应该是怎么样一个执行顺序呢,我们把程序运行一下观察代码的运行次序,

 可以看到我们先执行了CodeText类中的静态代码块,在整个代码中虽然有两个静态代码块,但是因为我们的main方法在CodeText类中,所以我们先要运行CodeText类,在CodeText类中,我们先运行了静态代码块,其次是局部代码块,然后new了一个Student对象去调用Code类中的代码,根据代码执行顺序,继续调用Student类中的静态代码块、构造代码块、无参构造代码块。

这里要注意这里在Student类中,我们把构造方法放在了构造代码块后,即便我们把构造方法放在构造代码块之前,依然会先执行构造代码块,因为在new对象的时候,会先执行构造代码块,再执行构造方法。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5705714.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存