0 0

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

直接上代码(《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);
}
}
我运行的结果是这样的:create a  new Cupboard in main
Bowl(4)
Bowl(5)
Bowl(3)
Cupboard()
f(2)
create a  new Cupboard in main
Bowl(3)
与书上的结果很不一样,求大神给看看! [color=red][/color]

问题补充:
Rainbow702 写道
少了这个吧
引用
Cupboard()
f(2)

看看是不是你的 Eclipse 的 Console 窗口太小没有显示完全

不是,书上运行的结果有对静态数据Bowl(1)Bow(2)的初始化,而我运行的结果是没有的!

问题补充:
Rainbow702 写道
我刚去看了一下你说的章节,里面是有下面这两句的啊
引用

static Table t2 = new Table();
static Cupboard t3 = new Cupboard();

这样的话 问题就明朗了 ! 我的书是盗版的 上面真心没有上两句!
OO 
2011年10月05日 19:43

3个答案 按时间排序 按投票排序

0 0

采纳的答案

我刚去看了一下你说的章节,里面是有下面这两句的啊

引用

static Table t2 = new Table();
static Cupboard t3 = new Cupboard();

2011年10月06日 15:29
0 0

引用
有对静态数据Bowl(1)Bow(2)的初始化

不可能吧?你的Table都没有被使用(或者说,没有被加载),它的这两个变量怎么会被初始化呢?

2011年10月06日 15:19
0 0

少了这个吧

引用
Cupboard()
f(2)

看看是不是你的 Eclipse 的 Console 窗口太小没有显示完全

2011年10月06日 00:05

相关推荐

    Thinking in java4(中文高清版)-java的'圣经'

    显式的静态初始化 5.7.4. 非静态实例初始化 5.8 数组初始化 5.8.1 可变参数列表 5.9 枚举类型 5.10 总结 第6章 访问权限控制 第7章 复用类 第8章 多态 第9章 接口 第10章 内部类 第11章 持有对象 第12章 通过异常...

    Thinking in Java读书笔记

    ### Thinking in Java 读书笔记知识点总结 #### 一、万事万物皆对象 1. **对象存储位置** - **寄存器**:程序无法直接控制。 - **栈(Stack)**:存储基本类型数据和对象引用,但对象本身不在此处。 - **堆(Heap)...

    Thinking in Java 3th Edition.zip

    《Thinking in Java》是Bruce Eckel的经典编程教材,第三版主要涵盖了Java编程语言的核心概念和技术。这本书深入浅出地介绍了面向对象编程的思想,是初学者和有经验的程序员理解Java的宝贵资源。以下是对该书内容的...

    Thinking in Java Fourth Edition

    - **初始化块**:介绍静态初始化块和实例初始化块的区别及应用场景。 - **对象清理**:讨论Java中对象生命周期的管理,包括垃圾回收机制的基本原理。 #### 第5章 隐藏实施过程 - **封装的重要性**:强调封装对于...

    thinking in java读书笔记

    - 静态初始化只执行一次,无论创建多少个对象。 - 实例初始化对于每个对象创建都会执行。 #### 六、数组的使用 1. **数组的基本属性**: - 所有数组都有一个固有成员`length`。 - 数组索引从0开始,最大索引为`...

    Thinking in Java 4th Edition with Annotated Solution Guide编程思想+课后习题源码

    8. **Initialization**:初始化涉及到类和对象的创建过程,包括构造函数、初始化块以及静态初始化块的使用。理解这些内容有助于避免初始化问题,确保程序正确运行。 9. **Operators**:Java中的运算符包括算术...

    Thinking in Java_all

    《Thinking in Java》是一本经典的Java编程教材,适合初学者深入理解Java语言。书中的内容涵盖了从基础到高级的各种主题,旨在帮助读者建立全面而深入的Java编程思维。 首先,书中的第一章“对象入门”介绍了面向...

    Thinking in Java 3rd Edition

    《Thinking in Java 3rd Edition》是一本深受Java开发者喜爱的经典教材,由Bruce Eckel撰写。这本书以其深入浅出的讲解方式,系统地介绍了Java编程语言的核心概念和技术,旨在帮助读者建立扎实的Java基础,提升编程...

    thinking in Java guide solutio

    - **静态初始化块与非静态初始化块**:分别用于初始化静态成员和非静态成员。 - **练习题解析**: - 练习1-3讲解了对象初始化的基本过程。 - 练习4-6则详细讨论了静态与非静态初始化块的应用场景。 - 练习7-10...

    Thinking in Java, 2nd edition

    《Thinking in Java》是Bruce Eckel的经典之作,第二版对初学者和经验丰富的开发者都具有极高的价值。这本书深入浅出地介绍了Java编程语言的核心概念和技术,帮助读者建立起扎实的面向对象编程思想。 1. 面向对象...

    Thinking in java读书笔记.docx

    - 引用可能未初始化,此时发送消息会导致运行时错误,所以推荐在创建引用时同时初始化。 - `new` 关键字用于在堆中创建对象,提供内存分配的灵活性,但速度相对较慢。 4. **内存区域**: - **寄存器**:最快,但...

    Thinking In Java学习之50问

    - 如果没有显式定义构造函数,Java会自动提供一个默认构造函数,用于初始化成员变量为默认值。 ### 17. 接口与成员变量 - **接口成员变量**:接口中定义的成员变量默认是public static final类型的,用于常量。 #...

    Thinking in java(中文版).chm

    - **变量与数据类型**:Java中的基本数据类型、引用数据类型,以及变量的声明、初始化和使用。 - **控制流**:包括if语句、switch语句、for循环、while循环、do-while循环以及break和continue语句的用法。 - **...

    Thinking_in_java中文第4版

    ### Thinking_in_java中文第4版 #### 知识点概览 本资料为《Thinking in Java》第四版的中文版,是一本全面介绍Java语言及其编程思想的经典教材。该书内容丰富,覆盖了从基本概念到高级技术的多个层面,适合初学者...

    thinking in java

    根据提供的信息,我们可以总结并详细解释《Thinking in Java》这一经典Java基础教程中涉及的关键知识点。本书被广泛认为是学习Java编程语言的最佳资源之一,它不仅涵盖了Java的基础知识,还深入探讨了面向对象编程的...

    Thinking.In.Java.3rd.Edition.Chinese.eBook

    《Thinking in Java》是Bruce Eckel的经典之作,中文版第三版是许多Java初学者和开发者的重要参考资料。这本书全面深入地探讨了Java语言的核心概念和技术,旨在帮助读者建立坚实的编程基础,理解面向对象编程的精髓...

    Thinking_in_Java_4前五章PPT

    综上所述,《Thinking in Java》第四版前五章涵盖了Java的基本概念、数据类型、存储机制、对象作用域等多个方面的重要知识点,是学习Java语言的基础。通过深入理解这些概念,可以帮助初学者更好地掌握Java编程的核心...

    ThinkingInJava第二章习题答案

    《Thinking in Java》是Bruce Eckel的经典之作,深入浅出地介绍了Java编程语言。第二章主要探讨了对象和类的概念,这是面向对象编程的基础。在这一章中,习题设计的目标是帮助读者巩固对对象、类、封装、继承以及...

    Pattens In Java.pdf

    - **初始化过程**:按层顺序初始化各个组件。 **特点:** - 保证系统的各层按照一定的顺序初始化。 - 支持更灵活的初始化流程。 #### 3.2 过滤器(Filter) **结构:** - **过滤器接口**:定义过滤行为的标准。 - *...

Global site tag (gtag.js) - Google Analytics