JAVASE-06-其他

关于final修饰的成员变量

final修饰的成员变量必须赋值且只能赋值一次

1
2
3
public class Yes {
public final A a = new A();
}

或者

1
2
3
4
5
6
public class Yes {
public final A a;
{
a = new A();
}
}

或者构造方法里赋值

关于代码块与构造方法的执行顺序

代码块先执行 -> 再执行构造方法

1
2
3
4
5
6
7
8
9
10
11
public class Yes {
public Yes(){
System.out.println("构造");
}
{
System.out.println("代码块");
}
public static void main(String[] args) {
Yes yes = new Yes();
}
}

输出

1
2
代码块
构造

再例如

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Yes {
{
System.out.println("代码块");
}
public Yes(){
System.out.println("构造");
}
{
System.out.println("代码块2");
}

public static void main(String[] args) {
Yes yes = new Yes();
}
}

输出

1
2
3
代码块
代码块2
构造