代码块
局部代码块
构造代码块
静态代码块
局部代码块
在方法中出现,限定变量声明周期,及早释放,提高内存利用率
class codedemo{ public static void main(String[] args){ { int x = 10; System.out.println(x); } System.out.println(x); } }
|
构造代码块
在类中方法外出现;多个构造方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
class Code{
{ int x = 100; System.out.println(x); } public Code(){} } }
class CodeDemo{ public static void main(String[] args){ Code c = new Code(); } }
|
静态代码块
在类中方法外出现;加了static
修饰,用于给类进行初始化,在加载的时候就执行,并且只执行一次
class Code{ static { int a = 1000; System.out.println(a); } public Code(){} } }
class CodeDemo{ public static void main(String[] args){ Code c = new Code(); } }
|
执行顺序
静态代码块>>构造代码块>>构造方法
思考
判断下列输出顺序:
class Student{ static { System.out.println("Student 静态代码块"); } { System.out.println("Student 构造代码块"); } public Student(){ System.out.println("Student 构造方法"); } }
class StudentDemo { static { System.out.println("main static code"); } public static void main(String[] args){ System.out.println("main 方法"); Student s = new Student(); } }
|
正确输出顺序:
- main static code
- main 方法
- Student 静态代码块
- Student 构造代码块
- Student 构造方法