Java代码块分类以及执行顺序

时间:2019-01-17
本文章向大家介绍Java代码块分类以及执行顺序,主要包括Java代码块分类以及执行顺序使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.普通代码块
出现在方法中的代码块,解决变量重命名问题
代码块一定要写在方法变量命名前

public  Test1(){
{
System.out.println("普通代码块");
}
}

2.构造代码块
定义在类中的代码块,不加任何修饰符
优先于类中的构造方法执行
有多少个对象就调用多少次构造块

class Test1{
{
  System.out.println("构造代码块");
}
}

3.静态代码块
定义在类中、并且使用static修饰的代码块
3.1在非主类中的静态块
优先于构造块执行,无论有多少对象产生,静态块只执行一次(类加载(加载那些在主方法中调用的方法和属性)时执行)

class Test1{
static{
  System.out.println("非主类静态代码块");
}
}

3.2在主类(包含主方法)中的静态块
优先于主方法执行

public class Test{
   static{
        System.out.println("主类静态代码块");
      }
      }

4.同步代码块

class Test1{
public  Test1(){
  {
    System.out.println("3父类普通代码块");
  }
}
{
  System.out.println("4父类构造代码块");
}
static{
  System.out.println("5父类非主类静态代码块");
}
}

class Test2 extends Test1{
public  Test2(){
{
  System.out.println("6子类普通代码块");
}
{
  System.out.println("7子类构造代码块");
}
static{
  System.out.println("8子类非主类静态代码块");
}
}

public class Test{
   static{
        System.out.println("9主类静态代码块");
      }
    public static void main(String[] args){
     System.out.println("1程序开始执行");
     new Test1();
     new Test2();
     System.out.println("2程序执行结束");
}
}

子类对象在进行实例化之前一定会首先实例化父类对象,先调用父类的构造方法后再调用子类的构造方法