java匿名语句还是它的名称?

java匿名语句还是它的名称?,java,Java,我想知道这叫什么。我在oracle网站上看到了这个程序。我保留了断点,并看到在调用静态块之后和构造函数之前调用此语句 这句话的意义是什么 { System.out.print("y "); } 在此代码中: public class Sequence { Sequence() { System.out.print("c "); } { System.out.print("y "); } public stati

我想知道这叫什么。我在oracle网站上看到了这个程序。我保留了断点,并看到在调用静态块之后和构造函数之前调用此语句

这句话的意义是什么

{
    System.out.print("y ");
}
在此代码中:

public class Sequence {
    Sequence() {
        System.out.print("c ");
    }

    {
        System.out.print("y ");
    }

    public static void main(String[] args) {
        new Sequence().go();
    }

    void go() {
        System.out.print("g ");
    }

    static {
        System.out.print("x ");
    }
}
它是静态块,并在加载类时调用它。一般来说,像匿名类这样没有任何名称的匿名方法是没有任何名称的类,它们的实现是在需要的地方提供的,并且不能重用

 {
        System.out.print("y ");
    }

正如Eran评论的那样,
它是一个实例初始化块,在创建实例时执行它,甚至在构造函数之前调用它。

它是一个初始化程序块。每当创建一个类的新实例时,就会执行它。大多数情况下,您并不真正需要它,因为实例初始化也可以放在构造函数中。初始化程序块主要用于初始化匿名内部类,您无法为其定义自己的构造函数(因为要定义构造函数,您需要类的名称)。

这称为静态初始化程序块或静态初始化程序

见:

就我个人而言,我宁愿不使用它们,这完全是因为我在网站上的文档中所述的原因

有一种替代静态块的方法-您可以编写私有块 静态方法:私有静态方法的优点是 如果需要重新初始化类变量,可以在以后重用


这是一个实例初始化块,它在创建实例时执行。感谢您的响应,这个块比构造函数有什么优势。。甚至每次创建实例时都会调用构造函数。当我们使用它时,理想的场景是什么?好吧,如果你有很多构造函数,那么不管你调用哪个构造函数,实例初始值设定项块都会被调用。这类似于在所有构造函数的开头调用一个helper方法。。。感谢您的回复,但我说的是{System.out.print(“y”)}谢谢Sach…顺便说一下,我没有点击这个答案是没有用的:)。。“我没有名誉点数去做那件事。”@Sach。。也没什么可接受的。。可能需要等待,直到我获得一些声誉点。请告诉被否决的投票人,请解释这个答案有什么不正确?不确定是谁被否决了,但它不是静态初始化块,它是实例初始化块
 {
        System.out.print("y ");
    }