Java四种代码块

原创 2018年04月15日 20:59:44

在java中用{}括起来的称为代码块,代码块可分为以下四种:

一.简介

   1.普通代码块:

      类中方法的方法体

   2.构造代码块:

      构造块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行

   3.静态代码块:

      用static{}包裹起来的代码片段,只会执行一次。静态代码块优先于构造块执行。

   4.同步代码块:

        使用synchronized(){}包裹起来的代码块,在多线程环境下,对共享数据的读写操作是需要互斥进行的,否则会导致数       据的不一致性。同步代码块需要写在方法中。

二.静态代码块和构造代码块的异同点

   相同点:都是JVM加载类后且在构造函数执行之前执行,在类中可定义多个,一般在代码块中对一些static变量进行赋值。

   不同点:静态代码块在非静态代码块之前执行。静态代码块只在第一次new时执行一次,之后不在执行。而非静态代码块每new一次就执行一次。

三.示例

    普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般语句的执行顺序由他们在代码中出现的次序决定,先出现先执行。

[java] view plain copy
  1. public class Test {  
  2.     public static void main(String[] args) {  
  3.         {  
  4.             int x = 3;  
  5.             System.out.println("普通代码块内的变量x=" + x);  
  6.         }  
  7.         int x = 1;  
  8.         System.out.println("主方法内的变量x=" + x);  
  9.         {  
  10.             int y = 7;  
  11.             System.out.println("普通代码块内的变量y=" + y);  
  12.         }  
  13.     }  
  14. }  
  15. /* 
  16.  * 运行结果   普通代码块内的变量x=3 
  17.  *            主方法内的变量x=1  
  18.  *            普通代码块内的变量y=7 
  19.  */  

 

       构造代码块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。如果存在多个构造代码块,执行顺序由他们在代码中出现的次序决定,先出现先执行。

[java] view plain copy
  1. public class Test1 {  
  2.     {  
  3.         System.out.println("第一构造块");  
  4.     }  
  5.   
  6.     public Test1(int i) {  
  7.         System.out.println("第" + i + "次调用" + "构造方法");  
  8.     }  
  9.   
  10.     {  
  11.         System.out.println("第二构造块");  
  12.     }  
  13.   
  14.     public static void main(String[] args) {  
  15.         new Test1(0);  
  16.         new Test1(1);  
  17.         new Test1(2);  
  18.   
  19.     }  
  20. }  
  21.   
  22. /* 
  23.  * 执行结果  第一构造块 
  24.  *           第二构造块 
  25.  *           第0次调用构造方法 
  26.  *           第一构造块 
  27.  *           第二构造块 
  28.  *           第1次调用构造方法 
  29.  *           第一构造块 
  30.  *           第二构造块 
  31.  *           第2次调用构造方法 
  32.  */  

        静态代码块:在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。每个静态代码块只会执行一次。由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。
      注意:1 .静态代码块不能存在于任何方法体内。

                2 .静态代码块不能直接访问实例变量和实例方法,需要通过类的实例对象来访问。

[java] view plain copy
  1. public class Test3 {  
  2.     public static String STATIC_FIELD = "静态属性";  
  3.   
  4.     // 静态块  
  5.     static {  
  6.         System.out.println(STATIC_FIELD);  
  7.         System.out.println("静态代码块1");  
  8.     }  
  9.   
  10.     public String field = "非静态属性";  
  11.   
  12.     // 非静态块  
  13.     {  
  14.         System.out.println(field);  
  15.         System.out.println("非静态代码块2");  
  16.     }  
  17.   
  18.     public InitOderTest() {  
  19.         System.out.println("无参构造函数");  
  20.     }  
  21.   
  22.     public static void main(String[] args) {  
  23.         InitOderTest test = new InitOderTest();  
  24.     }  
  25.   
  26.     // 非静态块  
  27.     {  
  28.         System.out.println(field);  
  29.         System.out.println("非静态代码块1");  
  30.     }  
  31.     // 静态块  
  32.     static {  
  33.         System.out.println(STATIC_FIELD);  
  34.         System.out.println("静态代码块2");  
  35.     }  
  36.       
  37. }  
  38. /* 
  39.  * 运行结果  静态属性 
  40.  *           静态代码块1 
  41.  *           静态属性 
  42.  *           静态代码块2 
  43.  *           非静态属性 
  44.  *           非静态代码块2 
  45.  *           非静态属性 
  46.  *           非静态代码块1 
  47.  *           无参构造函数 
  48.  */  
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36838191/article/details/79953208

Java的四种代码块

Java代码块  一.在Java中,使用”{}”括起来的代码称为代码块,代码块可以分为以下四种:  1.普通代码块:就是类中方法的方法体    public void xxx(){        ...
  • zhangzeyuaaa
  • zhangzeyuaaa
  • 2013-11-23 22:03:22
  • 4947

Java四种代码块及运行优先级

一、普通代码块   直接在一个方法中出现的{}就称为普通代码块,例子程序如下:   public class CodeDemo01{   public static void mai...
  • yz7074998
  • yz7074998
  • 2017-04-11 12:29:00
  • 728

java的四种代码块

一、普通代码块
  • kp_liu
  • kp_liu
  • 2014-07-24 19:15:14
  • 339

Java的四种代码块说明

普通代码块             这个没什么好说的,就是在一个方法中出现的{}就称为普通代码块            public class CodeDemo { public st...
  • bbhx1
  • bbhx1
  • 2012-04-27 00:10:44
  • 76

Java中的四种代码块

以下代码演示了创建一个对象并调用方法各个代码块之间的优先关系:public class Person { static{ System.out.println("1.我是静态块,...
  • Innocence_y
  • Innocence_y
  • 2017-03-21 00:16:50
  • 235

java四种代码块

出自http://my.oschina.net/building/blog/99213
  • hirohrj123
  • hirohrj123
  • 2014-04-03 17:20:26
  • 1361

黑马程序员_java的四种代码块

一:普通代码块
  • u010137107
  • u010137107
  • 2014-06-17 17:55:56
  • 215

java中四种代码块

Java的4种代码块 一、普通代码块   直接在一个方法中出现的{}就称为普通代码块,例子程序如下:   public class CodeDemo01{   public s...
  • liyunlan33
  • liyunlan33
  • 2014-11-24 16:17:00
  • 204

验证图片代码块

  • 2013年06月29日 09:10
  • 2KB
  • 下载

java语言基础(30)—— 代码块的划分及其作用

代码块:用{}包围的代码 java中的代码块按其位置划分为四种: 一 局部代码块      位置:局部位置(方法内部)      作用:限定变量的生命周期,尽早释放,节约内存      调用:调用其所...
  • wang740209668
  • wang740209668
  • 2016-03-31 21:33:14
  • 3483
收藏助手
不良信息举报
您举报文章:Java四种代码块
举报原因:
原因补充:

(最多只允许输入30个字)