代码块 code block
content (内容)
在程序结构之中使用“{}”定义的内容就称为代码块,但是会根据其声明的位置以及关键字的不同
代码块一共分为四种:
普通代码块(程序块),构造块,静态块,同步代码块(多线程)
一:普通代码块
普通代码块是定义在方法之中的代码块,其基本形式参考如下:
public class CodeBlock{ public static void main(String args[]){ { // 普通代码块 int x = 10; System.out.println(x); } } }
如果现在一个方法代码很长的时候,你又怕重名变量定义,那么可以考虑使用普通代码块(java 方法一般都比较短)
二:构造块:
构造块指的是定义在类中间的结构
范例:定义一个构造块
class Member{ { System.out.println("------构造块------"); } public Member(){ //构造方法 System.out.println("++++++++构造方法++++++++"); } } public class CodeBlock{ public static void main(String args[]){ new Member(); new Member(); } }
构造块优先于构造方法执行,并且每一次对象实例化的时候都会执行构造块中的代码
构造块允许定义多个,按照顺序执行(然并卵)
三:静态代码块
静态块定义在一个类之中代码块,但是其必须使用 static 关键字来进行定义,对于静态块需要考虑两种情况:
在主类中定义,不再主类中定义
范例:在非主类中定义静态块
class Member{ { System.out.println("------构造块------"); } static{ System.out.println("------静态块------"); } public Member(){ //构造方法 System.out.println("++++++++构造方法++++++++"); } } public class CodeBlock{ public static void main(String args[]){ new Member(); new Member(); } }
静态块优先于构造块执行,而且不管有多少个实例化对象,静态块只执行一次,静态块的主要作用是为了 static 属性初始化
class Member{ private static String uli; // static 属性 { System.out.println("------构造块------"); } static{ uli = “++++++++”; // 为 static属性赋值 System.out.println("------静态块------"); } public Member(){ //构造方法 System.out.println("++++++++构造方法++++++++"); } } public class CodeBlock{ public static void main(String args[]){ new Member(); new Member(); } }
另外静态块也可以定义在主类之中
public class CodeBlock{ static{ System.out.println("+++++++++++++++++"); } public static void main(String args[]){ System.out.println("fffffffffffffffffffff"); } }
静态块的执行优先级在主方法之前执行