thinging in java 里有这样一个类,本来以为被定义成final 的primitive类型的值是不会改变的,
但看了这个例子后,其实还是可以被改变的
例子如下:
class Poppet {
private int i;
Poppet(int ii) {
i = ii;
}
}
public class TestBlankFinal {
private final int i = 0;
private final int j;
private final Poppet p;
public TestBlankFinal() {
j = 1;
p = new Poppet(1);
System.out.println("j"+j);
}
public TestBlankFinal(int x) {
j = x;
p = new Poppet(x);
System.out.println("j2"+j);
}
public static void main(String[] args) {
new TestBlankFinal();
new TestBlankFinal(47);
new TestBlankFinal(45);
}
}
打印结果是:j247,j245
虽然被定义成了final,但没有初始化,结果还是可以变的.