Java tips 1 - final变量的几种初始化方式

final成员变量的初始化方式

方法1:在定义变量时直接赋值

1
2
3
public final class MyString {
private final char value[] = "";
}

方法2:在构造函数中初始化

1
2
3
4
5
6
7
public final class MyString {
private final char value[];

public MyString() {
this.value = "".value;
}
}

方法3:在构造代码块中初始化

1
2
3
4
5
6
7
public final class MyString {
private final char value[];

{
this.value = "".value;
}
}

注意: 构造代码块会在构造函数之前被执行。构造代码块、静态代码块执行顺序

final静态变量的初始化方式

方法1: 在定义时直接赋值

1
2
3
public final class MyString {
private static final long serialVersionUID = -6849794470754667710L;
}

方法2: 在静态代码块中赋值

1
2
3
4
5
6
7
public final class MyString {
private static final long serialVersionUID;

static {
this.serialVersionUID = -6849794470754667710L;
}
}

关于静态代码块、构造代码块、构造函数的执行顺序,请参考我的另一篇blog:构造代码块、静态代码块执行顺序