代码块
普通代码块,构造块,静态块,同步代码块
普通代码块:防止方法里面编写过多代码产生变量重名,对一个方法进行局部的代码分割
{ int num = 10; System.out.println("num = " + num); }
构造块:写在一个类里面的代码块
1. 构造块会在每次实例化对象的时候执行
2. 构造块会优先于构造方法执行
class Book{ public Book(){ System.out.println("【A】Book 类的构造方法"); } { System.out.println("【B】Book类的构造块"); } } public class Demo{ public static void main(String args[]){ new Book(); } } /*------------------------------ E:\Javacode>java Demo 【B】Book类的构造块 【A】Book 类的构造方法 E:\Javacode>*/
静态块:用 static 进行定义的代码块
1. 在非主类中使用:静态块将会优先于构造块执行,不管实例化多少个对象,静态块只执行一次
class Book { public Book(){ System.out.println("A.Book类中的构造方法"); } { System.out.println("B.Book类中的构造块"); } static { System.out.println("C.Book类中的静态块"); } } public class Demo{ public static void main(String args[]){ new Book(); new Book(); new Book(); } } /*--------------------------------------------- E:\Javacode>java Demo C.Book类中的静态块 B.Book类中的构造块 A.Book类中的构造方法 B.Book类中的构造块 A.Book类中的构造方法 B.Book类中的构造块 A.Book类中的构造方法 E:\Javacode>*/
2. 在主类中定义:静态块将会优先于主方法执行
public class Demo{ public static void main(String args[]){ System.out.println("hello world!"); } static { System.out.println("*************************"); } } /*------------------------------------------------ E:\Javacode>java Demo ************************* hello world! E:\Javacode>*/