您的位置:首页 > 其它

文章标题

2017-06-16 23:24 225 查看

static final域和final域的区别

class SelfCounter {
private static int count;
private int id = count++;
public SelfCounter(){
System.out.println("SelfCounter()"+id);
}
public String toString(){
return "SelfCounter "+ id;
}
}
public class WithFinalFields {
final SelfCounter scf = new SelfCounter();
static final SelfCounter scsf = new SelfCounter();
public String toString(){
return "scf = " + scf + "\tscsf" + scsf;
}
public static void main(String[] args) {
System.out.println("First object:");
System.out.println(new WithFinalFields());
System.out.println("Second object:");
System.out.println(new WithFinalFields());
}
}
运行结果:
SelfCounter()0
First object:
SelfCounter()1
scf = SelfCounter 1 scsfSelfCounter 0
Second object:
SelfCounter()2
scf = SelfCounter 2 scsfSelfCounter 0


这是think in java中的练习题 我自己看的有点迷糊记录一下

Because class loading initializes the static final,类加载的时候已经初始化了static final域 所以结果的第一个输出是:SelfCounter()0

it has the same value in both instances of WithFinalFields, whereas the regular final’s values are different for each instance.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  static