暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
JAVA第2章 一切都是对象.pdf
195
19页
0次
2021-02-22
50墨值下载
1
1
2 一切都是对象
“尽管以 C++为基础,但 Java 是一种更纯粹的面向对象程序设计语言”
无论 C++还是 Java 都属语言 Java 设计这种
并不象 C++里那么重要。合语言允许采用多种编程风格;之所以 C++
一种杂合语言,是因为它支持与 C 语言的向后兼容能力。由于 C++ C 的一个
超集,所含的许多都是者不具备这些特性使 C++在某方显
得过于复杂。
Java 先便定了希望进行象的序设也就说,
正式用它设计之前,必须先将自己的思想转入一个面向对象的世界(除非早已习
惯了这世界思维方式)。只有好这准备工作,其他 OOP 语言比,
才能体会 Java 的易易用。在本章我们将探 Java 的基本件,
体会为什么说 Java 乃至 Java 程序内的一切都是对象。
2.1 用句柄操纵对象
每种编程语言都有自己的数据处理方式。有些时候,程序员必须时刻留意准
备处理的是什么类型。您曾利用一些特殊语法直接操作过对象,或处理过一些间
接表示的对象吗(C C++里的指针)?
所有这些 Java 里都得到了简化,任何东西都可看作对象。因此,我们可
采用一种统一的语法,任何地方均可照搬不误。但要注意,尽管将一切都“看作”
对象,但操纵的标识符实际是指向一个对象的“句柄”Handle。在其他 Java
参考书里,还可看到有的人将其称作一个“引用”甚至一个“指针”可将这一
情形想象成用遥控板(句柄)操纵电视机(对象。只要握住这个遥控板,就相
当于掌握了与电视机连接的通道。但一旦需要“换频道”或者“关小声音”,我
们实际操纵的是遥控板(句柄)再由遥控板自己操纵电视机(对象)如果要在
房间里四处走走,并想保持对电视机的控制,那么手上拿着的是遥控板,而非电
2
视机。
此外,即使没有电视机,遥控板亦可独立存在。也就是说,只是由于拥有一
个句柄,并不表示必须有一个对象同它连接。所以如果想容纳一个词或句子,
创建一个
String
句柄:
String s;
但这里创建的只是句柄,并不是对象。若此时向
s
发送一条消息,就会获得
一个错误(运行期)这是由于
s
实际并未与任何东西连接(即“没有电视机”
因此,一种更安全的做法是:创建一个句柄时,记住无论如何都进行初始化:
String s = "asdf";
然而,这里采用的是一种特殊类型:字串可用加引号的文字初始化。通常,
必须为对象使用一种更通用的初始化类型。
2.2
所有对象都必须创建
创建句柄时,我们希望它同一个新对象连接。通常用
new
关键字达到这一目
的。
new
的意思是:“把我变成这些对象的一种新类型”。所以在上面的例子中,
可以说:
String s = new String("asdf");
它不仅指出“将我变成一个新字串”也通过提供一个初始字串,指出了“如
何生成这个新字串”
当然,字串
String
并非唯一的类型。
Java
配套提供了数量众多的现成类
型。对我们来讲,最重要的就是记住能自行创建类型。事实上,这应是
Java
序设计的一项基本操作,是继续本书后余部分学习的基础。
2.2.1
保存到什么地方
程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的
是内存的分配。有六个地方都可以保存数据:
(1)
寄存器。这是最快的保存区域,因为它位于和其他所有保存方式不同的
地方:处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编
译器分配。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存
在的任何踪迹。
(2)
堆栈。驻留于常规
RAM
(随机访问存储器)区域,但可通过它的“堆栈
指针”获得处理的直接支持。堆栈指针若向下移,会创建新的内存;若向上移,
则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。
创建程序时,
Java
编译器必须准确地知道堆栈内保存的所有数据的“长度”以
及“存在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针
这一限制无疑影响了程序的灵活性,所以尽管有些
Java
数据要保存在堆栈里—
—特别是对象句柄,但
Java
对象并不放到其中。
(3)
堆。一种常规用途的内存池(也在
RAM
区域)其中保存了
Java
对象。
和堆栈不同,内存堆”或“堆”
Heap
)最吸引人的地方在于编译器不必知
要从堆里分配多少存储空间,也不必知道存储的数据要在堆里停留多长的时间。
因此,用堆保存数据时会得到更大的灵活性。要求创建一个对象时,只需用
new
命令编制相关的代码即可。执行这些代码时,会在堆里自动进行数据的保存。
然,为达到这种灵活性,必然会付出一定的代价:在堆里分配存储空间时会花掉
更长的时间!
of 19
50墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜