java中的代码块理解

来源:互联网 发布:ubuntu安装vmware 编辑:程序博客网 时间:2024/06/01 08:42

代码块:就是用{}括起来到部分。根据应用的不同分为4类:普通代码块、构造块、静态代码块、同步代码块。

1.普通代码块:定义在方法中的代码块。

如:

[java] view plaincopy
  1. public class Ex22 {     
  2.     
  3.     public static void main(String[] args){     
  4. //      普通代码块     
  5.         {     
  6.             int i = 3;     
  7.             System.out.println("局部变量为 " + i);     
  8.         }     
  9.         int i = 5;     
  10.         System.out.println("相对上面的  i 来说是全局的变量 " + i);     
  11.              
  12.     }     
  13.     
  14.          
  15. }     
  16. //局部变量为 3     
  17. //相对上面的  i 来说是全局的变量 5   

2.构造块:直接在类中编写的代码块。

[java] view plaincopy
  1. class Demo5{     
  2.     {     
  3.         System.out.println("构造块");     
  4.     }     
  5.     public Demo5(){     
  6.         System.out.println("构造方法");     
  7.     }     
  8.     {     
  9.         System.out.println("构造方法后的构造块");     
  10.     }     
  11. }     
  12. public class Ex22 {     
  13.     
  14.     public static void main(String[] args){     
  15.         new Demo5();     
  16.         new Demo5();     
  17.          
  18.     }     
  19.     
  20.          
  21. }     
  22. //构造块     
  23. //构造方法后的构造块     
  24. //构造方法     
  25. //构造块     
  26. //构造方法后的构造块     
  27. //构造方法    

对象被实例化一次构造块就执行一次;

构造块优先执行比构造方法.

3.静态代码块:static 关键字声明的代码块.

[java] view plaincopy
  1. class Demo5{     
  2.     {     
  3.         System.out.println("1构造块");     
  4.     }     
  5.     public Demo5(){     
  6.         System.out.println("2构造方法");     
  7.     }     
  8.     {     
  9.         System.out.println("3构造方法后的构造块");     
  10.     }     
  11.     static {     
  12.         System.out.println("4静态代码块");     
  13.     }     
  14.              
  15. }     
  16. public class Ex22 {     
  17.     static {     
  18.         System.out.println("在主方法类中定义的代码块");     
  19.     }     
  20.          
  21.     public static void main(String[] args){     
  22.         new Demo5();     
  23.         new Demo5();     
  24.          
  25.     }     
  26.     
  27.          
  28. }     
  29. //在主方法类中定义的代码块     
  30. //4静态代码块     
  31. //1构造块     
  32. //3构造方法后的构造块     
  33. //2构造方法     
  34. //1构造块     
  35. //3构造方法后的构造块     
  36. //2构造方法   
  37.   

主方法静态代码块优先于主方法,

在普通类中静态块优先于构造块,

在普通类中构造块优先于构造方法,

静态块只实例化一次。

0 0