java中有几种代码块的对比

1.局部代码块

局部代码块,又叫普通代码块。它是作用在方法中的代码块。例如:

public void show(){
        {
 System.out.println("局部代码块运行!");
        }
    }

作用:控制变量的生命周期。

在程序中当我们定义完成一个局部变量x之后,并且在接下来的代码中,不想再用到它时,那么就没必要让x在内存中继续占用空间。因此就有了局部代码块。

2.构造代码块

在类中:

格式:{构造代码块执行语句}

作用:就是给所有对象进行初始化。

注意几点:

1.java编译器编译java类时,会先将成员属性的声明放到类的前端。成员变量的初始化工作放到构造函数中 
2.每次创建对象他都会执行。
3.构造代码快是优于构造函数执行。如果类中有构造代码块,java编译器在编译时会先将构造代码块中的代码移到构造函数中执行,构造函数中原有的代码最后执行
4.成员属性的初始化和构造代码块的执行顺序是根据原码中的位置执行
5.构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。也就是说,构造代码块中定义的是不同对象共性的初始化内容。

public class Apple{
    private String size;
    //构造代码块
        {
            System.out.println("构造代码块运行!");
             size="大";
        }
}

3.静态代码块 (使用static关键字声明的代码块)
作用:是对类进行初始化,为类的属性初始化。若一个类包含多个静态代码块,那则是按照代码执行顺序执行。
注意:

  1. 随着类的加载而执行,而且只一次。
  2. 由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
  3. 静态代码块不能存在于任何方法体内。 静态代码块不能直接访问静态实例变量和实例方法,需要通过类的实例对象来访问。
  4. 当类进入内存时,首先进行静态代码加载,例如静态代码块,用static 修饰的变量,函数等。静态代码块用于初始化类。构造函数是对对象进行初始化,而静态代码块可以对类进行初始化,就如在静态代码块中把静态变量 num 修改他的值。而且在一些不需要对类实例化的场合,静态代码块也可以非常有用。
static{
        System.out.println("静态代码块运行!");
    }

4.对比
java构造块与静态块
java构造代码块详解

你可能感兴趣的:(java中有几种代码块的对比)