Java学习笔记之十七Java中普通代码块,构造代码块,静态代码块区别及代码示例分析详解编程语言

//执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。

其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。

1 普通代码块

 1 //普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行” 
 2 public class CodeBlock01{ 
 3       public static void main(String[] args){ 
 4            
 5             { 
 6               int x=3; 
 7               System.out.println("1,普通代码块内的变量x="+x);     
 8             } 
 9              
10             int x=1; 
11             System.out.println("主方法内的变量x="+x); 
12              
13             { 
14                int y=7; 
15                System.out.println("2,普通代码块内的变量y="+y);     
16             } 
17           } 
18     } 
19      
20     /* 
21     运行结果: 
22     1,普通代码块内的变量x=3 
23          主方法内的变量x=1 
24          2,普通代码块内的变量y=7 
25     */

2 构造代码块

 1 //构造块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。 
 2  
 3 public class CodeBlock02{ 
 4     { 
 5       System.out.println("第一代码块");     
 6     } 
 7      
 8     public CodeBlock02(){ 
 9         System.out.println("构造方法"); 
10         } 
11          
12         { 
13           System.out.println("第二构造块"); 
14         } 
15       public static void main(String[] args){ 
16           new CodeBlock02(); 
17           new CodeBlock02(); 
18           new CodeBlock02(); 
19             
20     } 
21 }     
22  
23 /* 
24 * 
25 执行结果: 
26 第一代码块 
27 第二构造块 
28 构造方法 
29 第一代码块 
30 第二构造块 
31 构造方法 
32 第一代码块 
33 第二构造块 
34 构造方法 
35 */

3 静态代码块

 1 //静态代码块:在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。 
 2 //如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。 
 3 //注意:1 静态代码块不能存在于任何方法体内。2 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。 
 4  
 5  
 6 class Code{ 
 7     { 
 8       System.out.println("Code的构造块"); 
 9     } 
10      
11     static{ 
12         System.out.println("Code的静态代码块"); 
13         } 
14          
15     public Code(){ 
16         System.out.println("Code的构造方法"); 
17         } 
18     } 
19      
20      
21 public class CodeBlock03{ 
22      { 
23       System.out.println("CodeBlock03的构造块");     
24      } 
25       
26      static{ 
27         System.out.println("CodeBlock03的静态代码块"); 
28         } 
29          
30         public CodeBlock03(){ 
31              System.out.println("CodeBlock03的构造方法"); 
32             } 
33          
34       public static void main(String[] args){ 
35             System.out.println("CodeBlock03的主方法"); 
36             new Code(); 
37             new Code(); 
38             new CodeBlock03(); 
39             new CodeBlock03(); 
40           } 
41     } 
42 /* 
43 CodeBlock03的静态代码块 
44 CodeBlock03的主方法 
45 Code的静态代码块 
46 Code的构造块 
47 Code的构造方法 
48 Code的构造块 
49 Code的构造方法 
50 CodeBlock03的构造块 
51 CodeBlock03的构造方法 
52 CodeBlock03的构造块 
53 CodeBlock03的构造方法 
54 */

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/11906.html

(0)
上一篇 2021年7月19日 12:00
下一篇 2021年7月19日 12:00

相关推荐

发表回复

登录后才能评论