1、 毕业设计 (论文 )外文资料翻译 系 : 信息工程学院 专 业: 计算机科学与技术 姓 名: xxxxxx 学 号: xxxxxxxxx 外文出处: Thinking.In.Java.4th.Edition 附 件: 1.外文资料翻译译文; 2.外文原文。 指导教师评语: 签名: 2011 年 月 日 (用外文写 ) 附件 1:外文资料翻译译文 一切都是对象 “ 如 果我们说另一种不同的语言,那么我们就会发觉一个有些不同的世界”。 Ludwig Wittgenstein(1889-1951) “尽管以 C+为基础,但 Java 是一种更纯粹的面向对象程序设计语言”。 无论 C+还是 Java
2、 都属于 杂合语言 。但在 Java 中,设计者觉得这种杂合并不像在 C+里那么重要。杂合语言允许采用多种编程风格;之所以说 C+是一种杂合语言,是因为它支持与 C 语言的向后兼容能力。由于 C+是 C 的一个 超集 ,所以包含的许多特性都是后者不具备的,这些特性使 C+在某些地方显得过于复杂。 Java 语言首先便假定了我们只希望进行面向对象的程序设计。也就是说,正式用它设计之前,必 须先将自己的思想转入一个面向对象的世界(除非早已习惯了这个世界的思维方式)。只有做好这个准备工作,与其他 OOP 语言相比,才能体会到 Java 的易学易用。在本章,我们将探讨 Java 程序的基本组件,并体会
3、为什么说 Java 乃至 Java 程序内的一切都是对象。 1.1 用 句柄操纵对象 每种编程语言都有自己的数据处理方式。有些时候,程序员必须时刻留意准备处理的是什么类型。您曾利用一些特殊语法直接操作过对象,或处理过一些间接表示的对象吗( C或 C+里的指针)? 所有这些在 Java 里都得到了简化,任何东西都可看作对象,。因此 ,我们可采用一种统一的语法,任何地方均可照搬不误。但要注意,尽管一切都“看作”对象,但操纵的标识符实际是指向一个对象的“句柄”( Handle)。在其他 Java 参考书里,还可看到有的人将其称作一个“引用”,甚至一个“指针”。可将这一情形想象成用遥控板(句柄)操纵电
4、视机(对象)。只要握住这个遥控板,就相当于掌握了与电视机连接的通道。但一旦需要“换频道”或者“关小声音”,我们实际操纵的是遥控板(句柄),再有遥控板自己操纵电视机(对象)。如果要在房间里四处走走,并想保持对电视机的控制,那么手上拿着的是遥控板,而非电 视机。 此外,即使没有电视机,遥控板亦可独立存在。也就是说,只是由于拥有一个句柄,并不表示必须有一个对象同它连接。所以如果想容纳一个词或句子,可创建一个 String 句柄 : String s; 但这里创建的只是句柄,并不是对象。若此时向 s 发送一条消息,就会获得一个错误(运行期)。 这是由于 s 实际并未与任何东西连接(即“没有电视机”)。
5、因此,一种更安全的做法是:创建一个句柄时,记住无论如何都进行初始化: String s = “ zyp” ; 然而,这里用到了 Java 语言的一个特性 :字串可以用加引号的文本 初始化。 通常,必须为对象使用一种更通用的初始化 方法 。 1.2 有对象都必须创建 创建句柄时,我们希望它用一个新对象连接。通常用 new 关键字达到这一目标。 New 的意思是:“把我变成这些对象的一种新类型”。所以在上面的例子中,可以说: String s = new String(“ asdf” ); 它不仅指出“ 给我一个新的字符串 ”,也通过提供一个初始字符串 ,指出了“如何生成这个新字串”。 当然,字串
6、( String)并非唯一的类型。 Java 配套提供了数量 众 多的现成类型。对我们来讲,最重要的就是记住能自行创建类型。事 实上,这应是 Java 程序设计的一项基本操作,是继续本书后余部分学习的基础。 1.2.1 存储 到什么地方 程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。有六个地方都可以保存数据: ( 1)寄存器。这是最快的保存区域,因为它位于 不同于其他存储区的地方 处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹 (另一方面, C 和C+允许您向编
7、译器建议寄存器的分配方式) 。 ( 2)堆栈。驻留于常规 RAM(随机访问存储器)区域,但可通过它的“堆栈指针”获得处理的直接支持。堆栈指针若向下移 , 会创建新的内存;若向上移,则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。创建程序时, Java 编译器必须准确地知道堆栈内保存的所有数据的“长度”以及“存在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。这一限制无疑影响了程序的灵活性,所以尽管有些Java 数据要保存在堆栈里 特别是对象句柄,但 Java 对象并不 存储于 其中。 ( 3)堆。一种 通用 的内存池(也在 RAM 区域), 用于存放所有 的 Java 对象。和堆栈不