gpt4 book ai didi

java - 调用没有名称的 Java 方法

转载 作者:IT老高 更新时间:2023-10-28 11:27:06 26 4
gpt4 key购买 nike

我在看下面的代码,发现有些奇怪:

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 ");
}
}

我预计这会产生编译错误,因为带有“y”的 System.out 不属于方法声明,而只是 { }。为什么这是有效的?我看不出应该如何调用这段代码。

当运行它时,它也会产生 x y c g,为什么 static { } 在序列构造函数之前被调用?

最佳答案

这个:

static {
System.out.print("x ");
}

是一个静态初始化 block ,在类加载时被调用。您可以在您的类(class)中拥有任意数量的它们,并且它们将按照它们的出现顺序(从上到下)执行。

这个:

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

是一个初始化 block ,代码被复制到类的每个构造函数的开头。因此,如果您的类有很多构造函数,并且它们都需要在开始时做一些共同的事情,那么您只需要编写一次代码并将其放入像这样的初始化 block 中。

因此您的输出非常有意义。

作为 Stanley评论如下,见the section in the Oracle tutorial describing initializaiton blocks了解更多信息。

关于java - 调用没有名称的 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13699075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com