五:代码块

          在程序中使用“{}”定义的结构就称为代码块,而后根据代码块出现的位置以及定义的关键词的不同,代码块可以分为:普通代码块、构造代码块、静态代码块和同步代码块,其中对于同步代码块会在多线程中进行讲解。

1、普通代码块

          普通代码块的主要特点是定义在一个方法之中的代码块

  代码 分析 特征
普通代码块

public static void main(String arg[]) {
        if (true) {
            int x = 10;
            System.out.println("x=" + x);
        }

        int x = 100;
        System.out.println("x=" + x);
    }

按照Java程序的开发标准规定相同名称的变量是不能在同一个方法中存在,而此时通过“{}”进行划分界限,则两个相同变量可以同时存在,一个可以理解为局部变量,一个可以理解为全局变量(相对而言)。 可以在一个方法中进行一些结构的拆分,以防止相同变量名称所带来的相互影响

2、构造代码块

          构造块是定义在一个类之中的。

          观察构造块:

  代码 结果 特征
构造代码块

package cn.demos;

class Person {
    public Person() {
        System.out.println("Person类构造方法执行");
    }

    {
        System.out.println("Person类构造块执行");
    }

}

public class Demo2 {
    public static void main(String arg[]) {
        new Person();
        new Person();
        new Person();

    }
}
 

Person类构造块执行
Person类构造方法执行
Person类构造块执行
Person类构造方法执行
Person类构造块执行
Person类构造方法执行

构造块优先执行于构造方法;

每次对象实例化时,都会调用构造块里的代码。

3、静态代码块

          静态代码块主要指的是使用static关键字定义的代码块,而静态代码块的定义需要区分两种情况:

                    1)主类中定义静态块;

                    2)非主类中定义静态块。

  代码 结果 特征
非主类定义静态块

package cn.demos;

class Person {
    public Person() {
        System.out.println("Person类构造方法执行");
    }

    static {
        System.out.println("非主类的静态代码块的执行");

    }

    {
        System.out.println("Person类构造块执行");
    }
}

public class Demo2 {
    public static void main(String arg[]) {
        new Person();
        new Person();
        new Person();

    }
}
 

非主类的静态代码块的执行
Person类构造块执行
Person类构造方法执行
Person类构造块执行
Person类构造方法执行
Person类构造块执行
Person类构造方法执行
此时我们可以发现静态代码块优先于构造代码块的执行,且不管有多少个实例化对象,都只执行于一次;而静态代码块的主要目的是为了静态初始化的实现。
主类中定义静态块

package cn.demos;

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

    public static void main(String arg[]) {
        System.out.println("我要执行");
    }
}
 

主类中的静态代码块
我要执行
 
主类中的静态代码块优先于主类进行

你可能感兴趣的:(java,代码块)