我正在读Java类,我遇到了静态初始化器.但是,当你可以在第一时间设置默认值时,我看不到使用它们的意义.
例如,
static int a;
static {
a = 5;
}
与
static int a = 5
在类定义中.
这两者有区别吗?如果不是,您何时使用静态初始化程序与默认值?
解决方法:
没有不同.
when would you use static initializers versus default values?
当评估表达式的代码更复杂时,尤其是涉及异常时.
static int a ;
static {
String x = System.getProperty("abc");
try{
a = Integer.parseInt(x);
}
catch (Exception e){
throw new IllegalArgumentException
("missing or invalid system property 'abc': "+x);
}
}
但是,将代码移动到私有静态方法可能是最佳实践.
final static int a = complexCalculation();
标签:java,static
来源: https://codeday.me/bug/20190725/1530655.html