java代码块介绍与使用

简介: java代码块介绍与使用

代码块

基本介绍

代码块又称为==初始化块==,属于类中的成员(即是类的一部分),类似于方法,讲逻辑语句封装在方法体中,通过{}包围起来。
但和方法不同,没有方法名,没有返回,没有参数,只有方法体,而且不用通过对象或类显式调用,而是加载类时,或创建对象时隐式调用。

基本语法

[修饰符]{
    代码
};

注意

  1. 修饰符可选,要写的话,也只能写static
  2. 代码块分为两类,使用static修饰的叫静态代码块,没有static修饰的,叫普通代码块。
  3. 逻辑语句可以为任何逻辑语句(输入、输出、方法调用、循环、判断)
  4. ;可以省略

理解

  1. 相当于另外一种形式的构造器(对构造器的补充机制),可以做初始化操作。
  2. 场景:如果多个构造器中都有重复语句,可以抽取到初始化块中,提高代码重用性

使用细节

  1. static代码块也叫静态代码块,作用是对类进行初始化,而且它随着类的加载而执行,并且==只会执行一次==。如果是普通代码块,每创建一个对象,就执行。
  2. 类什么时候被加载

    1. 创建对象实例时(new)。
    2. 创建子类实例,父类也会被加载。
    3. 使用类的静态成员时(静态属性、静态方法)
      例:A类 extends B类 的静态块
  3. 普通代码块,在创建对象实例时,会被隐式调用。被创建一次,就会调用一次。如果只是使用类的静态成员时,普通代码块并不会执行。
  4. 创建一个对象时,在一个类,调用顺序是:

    1. 调用静态代码块和静态静态属性初始化(注意:静态代码块和静态属性初始化调用的优先级一样,如果有多个静态代码块和多个静态变量初始化,则按照它们的顺序)
    2. 调用普通代码块和普通属性的初始化(注意:普通代码块和普通属性初始化调用的优先级一样,如果有多个普通代码块和多个普通属性初始化,则按定义顺序调用)
    3. 调用构造器
  5. 构造器的最前面其实隐含了super()和调用普通代码块,新写一个类演示,静态相关的代码块,属性初始化,在类加载时,就执行完毕,因此是优先于 构造器和普通代码块 执行的。
class A{
    public A(){  //构造器
        //隐含条件
        //super();
        //调用普通代码块
        System.out.println("OK");
    }
}
  1. 调用顺序

    1. 父类的静态代码块和静态属性。
    2. 子类的静态代码块和静态属性。
    3. 父类的普通代码块和普通属性初始化。
    4. 父类构造方法。
    5. 子类的普通代码块和普通属性初始化。
    6. 子类构造器
  2. 静态代码块只能直接调用静态成员(静态属性和静态方法),普通代码块可以调用任意成员。
相关文章
|
6月前
|
Arthas Java 中间件
如何优雅的在java中统计代码块耗时
如何优雅的在java中统计代码块耗时
83 1
|
26天前
|
Java 编译器
【一步一步了解Java系列】:子类继承以及代码块的初始化
【一步一步了解Java系列】:子类继承以及代码块的初始化
20 3
|
3月前
|
Java 程序员 API
从代码中寻找平衡:’java代码块和具体的代码应用
Java 8 引入的 Lambda 表达式是一项革命性特性,使编写简洁、灵活且易维护的代码成为可能。Lambda 表达式作为一种匿名函数,支持任意数量参数和返回值,其基本语法为 `(parameters) -> expression` 或 `(parameters) -> { statements; }`。
35 0
|
3月前
|
Java
【Java】代码块
【Java】代码块
|
5月前
|
Java
Java中代码块区别及代码示例
Java中代码块区别及代码示例
30 0
|
5月前
|
Java C++
Java 基础内容(代码块)
Java 基础内容(代码块)
21 0
|
5月前
|
Java 编译器
Java中4种代码块:普通代码块,静态代码块,同步代码块,构造代码块
Java中4种代码块:普通代码块,静态代码块,同步代码块,构造代码块
217 0
|
5月前
|
Java
java代码块和具体的代码应用
java代码块和具体的代码应用
30 0
|
6月前
|
Java
【JAVA学习之路 | 基础篇】类的成员--代码块
【JAVA学习之路 | 基础篇】类的成员--代码块
|
5月前
|
Java
Java基础8-一文读懂Java 代码块和执行顺序(二)
Java基础8-一文读懂Java 代码块和执行顺序(二)
62 0