Java-14 代码块
代码块(局部代码块,构造代码块,静态代码块,同步代码块):Java中,使用{}括起来的代码被称为代码块
1.局部代码块:在方法中出现;
作用:限定变量的生命周期,及早释放,提高内存利用率,在同一个类出现的时候,多个局部代码块的执行顺序是自上而下的。
2.构造代码块:在类中方法外出现的
作用:多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
3.静态代码块:在类中方法外出现,并加上static修饰;
作用:用于给类进行初始化,在加载的时候就执行,并且只执行一次
注意事项:静态代码块在一个类中的顺序,不影响它的执行顺序,但是多个静态代码块在一个类中,
他们之间的执行顺序是自上而下的。
4.执行顺序:局部代码块 ---> 静态代码块 ---> 构造代码块 ---> 构造方法
package com.shujia.day1; //执行顺序:局部代码块 ---> 静态代码块 ---> 构造代码块 ---> 构造方法 class Code{ //静态代码块,对类进行初始化,只能调用一次,多个静态代码块调用顺序自上而下 static{ System.out.println("这是静态代码块1"); } //构造代码块,每次调用都执行,在构造方法前执行 { System.out.println("这是构造代码块"); } //此类的无参构造方法 Code(){ System.out.println("这是Code的无参构造方法"); } //静态代码块,多个静态代码块调用顺序自上而下 static{ System.out.println("这是静态代码块2"); } } public class CodeDemo { public static void main(String[] args) { //局部代码块,在方法中出现,限定变量的生命周期,及早释放,提高内存利用率,多个局部代码块的执行顺序是自上而下的 { int x =10; System.out.println(x); } { int y =20; System.out.println(y); } Code code=new Code(); System.out.println("======================二次调用==================="); Code code2=new Code(); } }
运行结果:
题目:
class Student{ static { System.out.println("这是在Stduent类中的静态代码块"); // 1 } { System.out.println("这是在Student类中构造代码块"); // 2 } Student(){ System.out.println("这是在Student类中的无参构造的方法"); // 3 } } // 4 5 1 2 3 public class StudentDemo { static { System.out.println("这是在StudentDemo中的静态代码块"); // 4 } public static void main(String[] args) { System.out.println("进入到main方法"); // 5 Student s = new Student(); } }