- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
java编程思想(第五版)第2章 一切都是对象java编程思想(第五版)第2章 一切都是对象
第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 参考书里,还可看到有的人将其称作一个“引用”,甚至一个“指针”。可将这一 情形想象成用遥控板(句柄)操纵电视机(对象)。只要握住这个遥控板,就相 当于掌握了与电视机连接的通道。但一旦需要“换频道”或者“关小声音”,我 们实际操纵的是遥控板(句柄),再由遥控板自己操纵电视机(对象)。如果要在 房间里四处走走,并想保持对电视机的控制,那么手上拿着的是遥控板,而非电 视机。 此外,即使没有电视机,遥控板亦可独立存在。也就是说,只是由于拥有一 个句柄,并不表示必须有一个对象同它连接。所以如果想容纳一个词或句子,可 创建一个String 句柄: String s; 但这里创建的只是句柄,并不是对象。若此时向s 发送一条消息,就会获得 一个错误(运行期)。这是由于s 实际并未与任何东西连接(即“没有电视机”)。 因此,一种更安全的做法是:创建一个句柄时,记住无论如何都进行初始化: String s = asdf; 然而,这里采用的是一种特殊类型:字串可用加引号的文字初始化。通常, 必须为对象使用一种更通用的初始化类型。 2.2 所有对象都必须创建 创建句柄时,我们希望它同一个新对象连接。通常用new 关键字达到这一目 的。new 的意思是:“把我变成这些对象的一种新类型”。所以在上面的例子中, 可以说: String s = new String(asdf); 它不仅指出“将我变成一个新字串”,也通过提供一个初始字串,指出了“如 1 何生成这个新字串”。 当然,字串(String )并非唯一的类型。Java 配套提供了数量众多的现成类 型。对我们来讲,最重要的就是记住能自行创建类型。事实上,这应是Java 程 序设计的一项基本操作,是继续本书后余部分学习的基础。 2.2.1 保存到什么地方 程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的 是内存的分配。有六个地方都可以保存数据: (1) 寄存器。这是最快的保存区域,因为它位于和其他所有保存方式不同的 地方:处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编 译器分配。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存 在的任何踪迹。 (2) 堆栈。驻留于常规RAM (随机访问存储器)区域,但可通过它的“堆栈 指针”获得处理的直接支持。堆栈指针若向下移,会创建新的内存;若向上移, 则会释放那些内存。这是一种特别快、特别有效的数据保存方式,仅次于寄存器。 创建程序时,Java 编译器必须准确地知道堆栈内保存的所有数据的“长度”以 及“存在时间”。这是由于它必须生成相应的代码,以便向上和向下移动指针。 这一限制无疑影响了程序的灵活性,所以尽管有些Java
您可能关注的文档
- Galaxy MEGA如何截屏(I9152)Galaxy MEGA如何截屏(I9152).pdf
- GARP选股策略--成长与价值并重GARP选股策略--成长与价值并重.pdf
- Gabriela Braun-亚洲政府如何促进小额信贷_贷帮Gabriela Braun-亚洲政府如何促进小额信贷_贷帮.pdf
- GameUX_S05_面部表情自动识别技术及在游戏行业的应用_蔡达章GameUX_S05_面部表情自动识别技术及在游戏行业的应用_蔡达章.pdf
- GB50030氧气管线设计规范要求GB50030氧气管线设计规范要求.doc
- GB9242 消防广播主机-150W 说明书V1.0GB9242 消防广播主机-150W 说明书V1.0.pdf
- GB5237相关测试-沸水附着力试验的水斑和变色GB5237相关测试-沸水附着力试验的水斑和变色.ppt
- GBT50430-2007《规范》审核员内部考试模拟试题GBT50430-2007《规范》审核员内部考试模拟试题.pdf
- gcc链接脚本学习gcc链接脚本学习.doc
- gdal读写图像分块处理(精华版)gdal读写图像分块处理(精华版).doc
- java编程思想_第五章(隐藏实现)java编程思想_第五章(隐藏实现).pdf
- java高级测试题java高级测试题.doc
- Java面向对象(二)习题Java面向对象(二)习题.doc
- JBK3-1600VA控制变压器的作用和参数JBK3-1600VA控制变压器的作用和参数.pdf
- JBK3-160VA控制变压器的作用和参数JBK3-160VA控制变压器的作用和参数.pdf
- JBK3-200VA控制变压器的作用和参数JBK3-200VA控制变压器的作用和参数.pdf
- JBK3-2500VA控制变压器的作用和参数JBK3-2500VA控制变压器的作用和参数.pdf
- JBK3-800VA控制变压器的作用和参数JBK3-800VA控制变压器的作用和参数.pdf
- JBoss的部署及运行JBoss的部署及运行.doc
- JBT10189-2000《汽车用等速万向节及其总成》JBT10189-2000《汽车用等速万向节及其总成》.pdf
最近下载
- WST 554-2017 学生餐营养指南.pdf VIP
- 致用英语(第三版)听力教程1教学课件Unit 7-PPT课件.pptx VIP
- 烽火岁月中的木刻 课件 2025浙美版美术七年级上册.ppt
- 13G311-1混凝土结构加固构造图集.pdf VIP
- 小学数学六年级《找规律》数学活动课PPT课件.ppt VIP
- 【历史】七年级下册必背知识点汇总+2024-2025学年统编版七年级历史下册.docx VIP
- 高标准农田跟踪审计、工程中间计量、变更价格调整及竣工结算审核项目 投标方案(技术方案).doc
- 保安管理与风险控制培训课件.pptx VIP
- (新教材)部编人教版一年级上册小学语文全册教案(教学设计)(新课标核心素养教案).pdf
- FANUC机器人的码垛堆积功能(二)示教编程.docx VIP
文档评论(0)