免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1071 | 回复: 2
打印 上一主题 下一主题

关于初始化的问题 ,麻烦大家帮我看下,谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-07-20 23:56 |只看该作者 |倒序浏览
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 StaticInitialization {
  public static void main(String[] args) {
    System.out.println(
      "Creating new Cupboard() in main");
    new Cupboard();
    System.out.println(
      "Creating new Cupboard() in main");
    new Cupboard();
    t2.f2(1);
    t3.f3(1);
  }
  static Table t2 = new Table();
  static Cupboard t3 = new Cupboard();
}   书上说所有变量一定会在任何一个函数被调用之前完成初始化。但这个程序在完成了 2个static 的初始化话后 进入main()   先打印了“Creating new Cupboard() in main”  再初始化new Cupboard(); 这是为什么呀  麻烦大家帮我看下  谢谢啊 还有 如果我在static Table t2 = new Table(); 前加一句象Table t3 = new Table();这样的non-static语句 程序能通过 但添加的语句不回打印任何内容 这是为什么呀   麻烦大家了  我刚开始看JAVA 编程思想 。谢谢大家

论坛徽章:
0
2 [报告]
发表于 2006-07-21 07:54 |只看该作者
JVM只在用到某个类的时候才去加载它,所以可能会出现上述情况

论坛徽章:
0
3 [报告]
发表于 2006-07-21 13:56 |只看该作者
谢谢楼上的, 不过还是不懂。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP