看Thinking in java 遇到的数据静态初始化问题

直接上代码(《thinking in java》 197页的例题):package jxau.edu.cn;
class Bowl{
Bowl(int marker){
System.out.println("Bowl("+marker+")");
}
void f(int marker){
System.out.println("f("+marker+")");
}

}
class Table{
static Bowl b1=new Bowl(1);
Table(){
System.out.println("Table()");
b2.f(1);
}
void f2(int marker){
System.out.println("f2("+marker+")");
}
static Bowl b2=new Bowl(2);

}
class Cupboard{
Bowl b3=new Bowl(3);
static Bowl b4=new Bowl(4);
Cupboard(){
System.out.println("Cupboard()");
b4.f(2);
}
void f3(int marker){
System.out.println("f3("+marker+")");
}
static Bowl b5=new Bowl(5);

}
public class StaticTest {
public static void main(String args[]){
System.out.println("create a new Cupboard in main");
new Cupboard();
System.out.println("create a new Cupboard in main");
new Cupboard();
// Table t2=new Table();
// t2.f2(1);
//t3.f3(1);
}
}
我运行的结果是这样的:[color=darkred]create a new Cupboard in main
Bowl(4)
Bowl(5)
Bowl(3)
Cupboard()
f(2)
create a new Cupboard in main
Bowl(3)[/color] 与书上的结果很不一样,求大神给看看! [color=red][/color]

oo

3个回答

我刚去看了一下你说的章节,里面是有下面这两句的啊
[quote]
static Table t2 = new Table();
static Cupboard t3 = new Cupboard();
[/quote]

少了这个吧
[quote]Cupboard()
f(2)
[/quote]
看看是不是你的 Eclipse 的 Console 窗口太小没有显示完全

[quote]有对静态数据Bowl(1)Bow(2)的初始化[/quote]
不可能吧?你的Table都没有被使用(或者说,没有被加载),它的这两个变量怎么会被初始化呢?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐