代码块

普通代码块,构造块,静态块,同步代码块

 

普通代码块:防止方法里面编写过多代码产生变量重名,对一个方法进行局部的代码分割

{
    int num = 10;
    System.out.println("num = " + num);
}

 

构造块:写在一个类里面的代码块

1. 构造块会在每次实例化对象的时候执行

2. 构造块会优先于构造方法执行

class Book{
    public Book(){
        System.out.println("【A】Book 类的构造方法");
    }
    {
        System.out.println("【B】Book类的构造块");
    }
}

public class Demo{
    public static void main(String args[]){
        new Book();
    }
}
/*------------------------------
E:\Javacode>java Demo
【B】Book类的构造块
【A】Book 类的构造方法

E:\Javacode>*/

 

静态块:用 static 进行定义的代码块

1. 在非主类中使用:静态块将会优先于构造块执行,不管实例化多少个对象,静态块只执行一次

class Book {
    public Book(){
        System.out.println("A.Book类中的构造方法");
    }
    {
        System.out.println("B.Book类中的构造块");
    }
    static {
        System.out.println("C.Book类中的静态块");
    }
}

public class Demo{
    public static void main(String args[]){
        new Book();
        new Book();
        new Book();
    }
}
/*---------------------------------------------
E:\Javacode>java Demo
C.Book类中的静态块
B.Book类中的构造块
A.Book类中的构造方法
B.Book类中的构造块
A.Book类中的构造方法
B.Book类中的构造块
A.Book类中的构造方法

E:\Javacode>*/

2. 在主类中定义:静态块将会优先于主方法执行

public class Demo{
    public static void main(String args[]){
        System.out.println("hello world!");
    }
    static {
        System.out.println("*************************");
    }
}
/*------------------------------------------------
E:\Javacode>java Demo
*************************
hello world!

E:\Javacode>*/

 

posted @ 2019-02-18 19:52  眉毛病  阅读(145)  评论(0编辑  收藏  举报