class SelfCounter {
private static int count = 0;
private int id = count++;
public String toString() {
return "SelfCounter " + id;
}
}class WithFinalFields {
final SelfCounter scf = new SelfCounter();
static final SelfCounter scsf =
new SelfCounter();
public String toString() {
return "scf = " + scf + "\nscsf = " + scsf;
}
}public class E18_FinalFields {
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());
}
}迷糊打印SCSF对象时TOSTRING 方法中的ID值为什么时0?哪位给祥解下多谢
private static int count = 0;
private int id = count++;
public String toString() {
return "SelfCounter " + id;
}
}class WithFinalFields {
final SelfCounter scf = new SelfCounter();
static final SelfCounter scsf =
new SelfCounter();
public String toString() {
return "scf = " + scf + "\nscsf = " + scsf;
}
}public class E18_FinalFields {
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());
}
}迷糊打印SCSF对象时TOSTRING 方法中的ID值为什么时0?哪位给祥解下多谢
解决方案 »
- 为什么有些时候定义接口比定义类得到的系统耦合度更低?
- LINUX 下运行Tomcat出错,命令出现乱码
- 一个图形用户界面GUI的多线程问题
- 请各位高帮看下?
- 求教:通过jni调用现有msscript.ocx库的问题
- 为什么我在命令行输入可以运行,可是把命令写到文件里用 < file > outfile 这样的命令就出错呢?
- 用java如何写telnet的小程序?
- java.util.Timer类和javax.swing.Timer类有什么区别?
- java在P41.6G电脑上的问题。
- 安装完jdk后怎样测试是否配置正确?
- 如何在jtree的节点插入图片?
- 关于java.util.ConcurrentModificationException
这行是在main执行前执行的,所以scsf对象的ID是0System.out.println("First object:");
System.out.println(new WithFinalFields());
System.out.println("Second object:");
System.out.println(new WithFinalFields());
此时又生成了两个SelfCounter对象,ID分别是1和2最后共生成了三个SelfCounter对象
final 不可修改的
private static int count = 0;
就是为count=0分配了一块不可修改的存储空间不变的地方
无论后面怎么对count赋值 count都等于0
private static int count = 0;
private int id = count++;
public String toString() {
return "SelfCounter " + id;
}
}class WithFinalFields {
如果这里+了 "static" final SelfCounter scf = new SelfCounter();
static final SelfCounter scsf =
new SelfCounter();
public String toString() {
return "scf = " + scf + "\nscsf = " + scsf;
}
}public class E18_FinalFields {
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());
}
}INPUT:
First object:
scf=SelfCounter 0
scsf = SelfCounter 1
Second object:
scf=SelfCounter 0
scsf = SelfCounter 1为什么SCSF里的ID值又是1了?
scf=SelfCounter 0
scsf = SelfCounter 1
这个不可能吧?应该是
Second object:
scf=SelfCounter 0
scsf = SelfCounter 2要是真的是你的结果,呵呵,那你算是找到个JAVA的BUG
为什么?private static int count = 0;
count++; 这个在JAVA里是先赋值,然后自增
static final SelfCounter scsf =
new SelfCounter();
与1楼的不一样