Java 静态块和静态场的区别是什么?

Java 静态块和静态场的区别是什么?,java,static,static-members,static-block,Java,Static,Static Members,Static Block,我看了看,我很困惑。他使用一个静态块。他为什么只写一行 这两者有什么区别 private static Pattern email_pattern = Pattern.compile(EMAIL_PATTERN); 及 你的例子的行为没有区别。静态块可用于执行比仅分配变量更多的逻辑操作。在您的示例中,无需使用该块。两个代码片段执行相同的操作,但大多数人会发现紧凑版本更易于阅读 在单行赋值版本中,有些操作是无法执行的,例如处理异常。在这些情况下,必须使用初始值设定项块 第三种方法是将初始值设定项

我看了看,我很困惑。他使用一个静态块。他为什么只写一行

这两者有什么区别

private static Pattern email_pattern = Pattern.compile(EMAIL_PATTERN);


你的例子的行为没有区别。静态块可用于执行比仅分配变量更多的逻辑操作。在您的示例中,无需使用该块。

两个代码片段执行相同的操作,但大多数人会发现紧凑版本更易于阅读

在单行赋值版本中,有些操作是无法执行的,例如处理异常。在这些情况下,必须使用初始值设定项块

第三种方法是将初始值设定项代码移动到(静态)方法中


第一个不必要地有两个任务。。。
private static Pattern email_pattern;

static {
    email_pattern = Pattern.compile(EMAIL_PATTERN);
}
private static final Pattern pattern = doSomethingReallyComplexHere();