Java代码块

463 阅读3分钟
  • 代码块又叫初始化块,属于类的五大成员之一,即使类的一部分 类似于方法,将逻辑语句封装在方法提中,通过{ }包围起来。但和方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不用通过对象或类显示调用,而是在加载类的时候或者创建对象的时候隐式调用。
               {
                System.out.println("电影屏幕打开。。");
		System.out.println("电影开始");
		System.out.println("电影结束了");
                }
           这就是一个代码块
  • 在程序中通常给对象进行初始化,它的执行优先级要高于构造器,与属性调用优先级相同,他没有返回值和访问修饰符,也不用加void关键字。
  • 代码块大体上分为两类:静态代码块非静态代码块,也即普通代码块

静态代码块

static {
		System.out.println("jack is a boy");
	}

静态代码块的使用细节:

1.可以有输出语句

2.可以对类的属性声明进行初始化操作

3.可以调用静态的变量或方法,但不可以对非静态的属性进行初始化,即不能调用非静态属性和方法

4.当有多个静态代码块时,按照从上到下的顺序依次执行

5.静态代码块随着类加载而加载,所以静态代码块的执行要先于非静态代码块。

6.静态代码块只能执行一次。

非静态代码块(普通代码块)

{
  System.out.println("jack is a boy");
  System.out.println("Mary is a girl");
}

非静态代码块的使用细节:

  1. 可以输出语句

  2. 可以对类的属性声明进行初始化操作

  3. 可以调用静态和非静态的变量或方法

  4. 如有多个非静态的代码块,那么按照从上到下的顺序一次执行

  5. 每次创建对象的时候,都执行一次。

  • 值得注意的是:静态代码块中只能调用静态属性和方法,但非静态代码块既可以调用静态属性和方法,也可以调用非静态属性和方法。静态代码块只会执行一次,且随着类加载而加载,因此它的作用是对类进行初始化。而非静态代码块在每次创建对象的时候都会执行一次,因此非静态代码块的作用是对对象进行初始化。

  • 当类与类存在继承关系时,类的成员调用优先级如下(重要):

    1.父类的静态属性和静态代码块(优先级一样,按照从上到下的顺序执行)

    2.子类的静态属性和静态代码块(优先级一样,按照从上到下的顺序执行)

    3.父类的普通代码块和普通属性初始化(优先级一样,按照从上到下的顺序执行)

    4.父类的构造方法

    5.子类的普通代码块和普通属性初始化(优先级一样,按照从上到下的顺序执行)

    6.子类的构造方法