java中的代码块

java中的代码块一共分为以下几种:普通代码块、构造代码块、静态代码块

一、普通代码块

  首先从位置上来说,普通代码块是放在方法中的,普通代码块的执行也是按照代码书写顺序进行执行的,使用代码块可以解决当前方法中变量名重复的问题,

  当你想要在一个方法中多次使用同一个变量名,并且互不影响,这时就可以将该变量放入普通代码块中。

public static void main(String[] args){
		 
	System.out.println("主方法输出");
	{
	   System.out.println("普通代码块输出");
	}	 
 }

  输出结果如下:

  

 二、构造代码块

  首先从位置上来说,构造代码块是放在类中的,构造代码块是先于构造方法(无论是有参还是无参)执行的,每次创建对象时,构造代码块就会执行一次。

public CodeBlockDemo(){
		 System.out.println("构造方法输出");
	 }
	 
	 //构造代码块
	 {
		 System.out.println("构造代码块输出...");
	 }
	 
	 public static void main(String[] args){
		 
		 //创建对象1
		 CodeBlockDemo codeBlockDemo1 = new CodeBlockDemo();
		 //创建对象2
		 CodeBlockDemo codeBlockDemo2 = new CodeBlockDemo();
		 System.out.println("主方法输出");
		 {
			 System.out.println("普通代码块输出");
		 }
		 System.out.println("===================");
		 
	 } 

  输出结果如下:

  java中的代码块_第1张图片

   根据结果我们可以看出,每次在创建对象时,构造代码块都会执行一次,并且比构造方法优先执行。

  经反编译工具后如下:

  java中的代码块_第2张图片

 

   通过这里我们可以看出,构造代码块中的内容全部都放在构造方法中了,所以会每次创建对象时,都会执行构造代码块,然后再执行构造方法中的内容。

三、静态代码块

  从位置上来说,静态代码块与构造代码块放的位置一样,都是放在类中,但是静态代码块是使用static关键字修饰的代码块。静态代码块是在类加载的时候执行,

  并且只会只能执行一次,跟创建不创建对象无关。

public CodeBlockDemo(){
		 System.out.println("构造方法输出");
	 }
	 
	 //静态代码块
	 static {
		 System.out.println("静态代码块输出...");
	 }
	 
	 public static void main(String[] args){
		 
		 System.out.println("主方法输出");
		 System.out.println("===================");
		 
	 }

  输出结果如下:

  java中的代码块_第3张图片

 

 四、下面我们来总结一下普通代码块、构造代码块以及静态代码块的执行顺序

public CodeBlockDemo(){
		 System.out.println("构造方法输出");
	 }
	 
	 //构造代码块
	 {
		 System.out.println("构造代码块输出...");
	 }
	 
	 //静态代码块
	 static {
		 System.out.println("静态代码块输出...");
	 }
	 
	 public static void main(String[] args){
		 
		 //创建对象1
		 CodeBlockDemo codeBlockDemo1 = new CodeBlockDemo();
		 //创建对象2
		 CodeBlockDemo codeBlockDemo2 = new CodeBlockDemo();
		 System.out.println("主方法输出");
		 {
			 System.out.println("普通代码块输出");
		 }
		 System.out.println("===================");
		 
	 }

  输出结果如下:

  java中的代码块_第4张图片

 

   从以上输出结果中我们可以得到以下结论:静态代码块是再类加载的时候执行,执行优先级最高,构造代码块是在创建对象时执行,

  并且每次创建对象的时候都会执行,优于构造方法执行,普通代码块放在方法中,按照书写顺序执行。

  所以运行优先级从高到低为:静态代码块 > 构造代码块 > 构造方法 > 普通代码块

  

  

 

  

你可能感兴趣的:(java中的代码块)