网站大量收购独家精品文档,联系QQ:2885784924

《ist27.docVIP

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《ist27

第27章 从C++到Java 本章介绍当C++的开发人员转移到Java时必须注意的一些问题。许多Java程序员都有C++背景,因此利用原来的C++的技巧、技术和源代码是很自然的事情。虽然C++和Java是为不同的环境而设计的,但许多编程技术,算法和优化机制是相同的。然而,正如本书的第一部分所述,Java并不是一个Internet版本的C++。两种编程语言有许多相同之处,但它们仍旧存在着许多不同。本章将探讨这些不同之处并描述如何处理其中比较有挑战性的问题。 27.1 C++ 和Java的区别 在讨论特定环境之前,先探讨一下C++ 和Java的基本区别。这些不同之处大致分为三类: · Java不支持的C++特性 · Java的独特之处 · C++和Java都有但是却不相同的特性 这里将分别讨论这三类区别。 27.1.1 Java摈弃的C++内容 有些C++的内容特性Java不再支持。在某些情况下,一个特殊的C++特性和Java的运行环境不相关。另一些情况下,Java的设计者舍弃了C++中某些重复的内容。还有一些情况是,出于对Internet applet的运行安全问题的考虑,Java不再支持某些C++特点。 C++与Java之间的最大不同可能是Java不再支持指针。指针使C++语言成为功能最强大最重要的一种编程语言。但同时指针在使用不正确的情况下也是C++中最危险的部分。Java不支持指针的原因主要有两点: · 指针本身就非常不安全。例如,使用C++的状态指针,可以访问程序代码和数据段外的内存地址。一个恶意程序可以利用这个特点破坏系统,完成非法访问(如获取口令等),或者违反安全限制。 · 即使指针可以被限制在Java的运行系统中(这在理论上是可行的,因为Java程序是解释执行的),Java的设计者相信它们仍然是麻烦所在。 注意:既然Java中不存在指针,那么也不存在-操作符。 这里还列举了一些非常重要的“省略”: · Java不再包含结构或者联合。在可以完全包含它们的类出现之后,这些结构成为冗余部分。 · Java不再支持操作符重载。操作符重载在某些情况下造成类C++程序的含糊不清,Java的设计人员感觉它带来的麻烦要比它带来的好处多。 · Java不再包括预处理,也不再支持预处理指令。预处理在C++语言中已经不如在C中那么重要,Java的设计者认为是彻底消除预处理的时候了。 · Java不支持自动的类型转换,因为这种类型转换导致精度降低。例如当从长整型转换为整型时,必须显式强制执行类型转换。 · 在Java中的代码必须封装在一个或多个类中。因此Java中不再包含所谓的全局变量或全局函数。 · Java不再允许默认参数。在C++中,当过程调用时存在没有对应值的参数时可以使用一个预先指定的值。Java不再允许这样的操作。 · Java不支持多重继承,即不允许一个子类继承多个父类。 · 虽然Java支持构造函数,但不再支持析构函数。但是,Java增加了finalize(?)函数。 · Java不再支持typedef。 · Java不再支持goto语句。Java不再有delete操作符 。 · Java中的and不再重载I/O操作。 · Java中,对象只能由引用传递,C++中对象可由值或引用传递。 27.1.2 Java的新特性 Java中的许多特性是C++中没有的。其中最重要的三个方面是多线程、包和接口,还有其他的许多独特之处都丰富了Java编程环境。 · 正如本书的前面章节中讨论过的那样,多线程允许两个或者多个相同线程并发运行。而且,这是一种在语言级支持的并发机制。C++中没有类似的机制。如果需要并发执行一个C++程序,必须利用操作系统的功能手工启动。虽然这两种方法都可以同时执行两个或者多个线程,但Java的方法清楚而且便于使用。 · C++中没有可以与Java包对应的特性。最近似的是用一个公用头文件的一组库函数。然而,在C++中构建和使用函数库与在Java中构建包和使用包是完全不同的。 · Java的接口与C++的抽象类相似(C++中的抽象类是包括至少一个纯虚函数的类)。例如,C++的抽象类和Java的接口都不能创建实例。两者都用于指定一个子类实现的一致接口。两者之间最大的不同之处在于接口更清晰的表明了这个概念。 · Java提供一个流线型的内存分配机制。与C++类似,Java支持new这个关键字。但是,不支持delete关键字。当对象的最后一个引用撤销时,对象本身被自动地删除,并进行内存垃圾回收。 · Java丢弃了C++的标准库,将它替换成自己的API类集合。它们功能上有相似之处,但名字和参数有显著不同。同时,因为所有的Java API库都是面向对象的,而C++库只有部分是,所以库例程调用的方式不同。 · Jav

文档评论(0)

yingrong + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档