静态块和静态域有什么区别?

时间:2016-06-20 07:50:34

标签: java static static-members static-block

我看了this issue,我很困惑。他使用静态块。他为什么要写一行?

这两者有什么区别?

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

private static Pattern email_pattern;

static {
    email_pattern = Pattern.compile(EMAIL_PATTERN);
}

2 个答案:

答案 0 :(得分:6)

您的示例的行为没有区别。静态块可用于执行更多逻辑,而不仅仅是分配var。无需在示例中使用该块。

答案 1 :(得分:2)

两个代码片段都做同样的事情,但大多数人会发现紧凑版本更容易阅读。

在单行分配版本中有些事情是您无法做到的,例如处理异常。在这些情况下,您必须使用初始化程序块。

第三种方法是将初始化代码移动到(静态)方法中。

private static final Pattern pattern = doSomethingReallyComplexHere();