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

java编程思想中总结的C++及java的区别.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(1) 最大的障碍在于速度:解释过的Java要比C的执行速度慢上约20倍。无论什么都不能阻止Java语言进行 编译。写作本书的时候,刚刚出现了一些准实时编译器,它们能显著加快速度。当然,我们完全有理由认 为会出现适用于更多流行平台的纯固有编译器,但假若没有那些编译器,由于速度的限制,必须有些问题 是Java不能解决的。 (2) 和C++一样,Java也提供了两种类型的注释。 (3) 所有东西都必须置入一个类。不存在全局函数或者全局数据。如果想获得与全局函数等价的功能,可考 虑将static方法和static数据置入一个类里。注意没有象结构、枚举或者联合这一类的东西,一切只 有“类” (Class )! (4) 所有方法都是在类的主体定义的。所以用C++的眼光看,似乎所有函数都已嵌入,但实情并非如何 (嵌 入的问题在后面讲述)。 (5) 在Java 中,类定义采取几乎和C++一样的形式。但没有标志结束的分号。没有class foo这种形式的类声 明,只有类定义。 class aType() void aMethod() {/* 方法主体 */} } (6) Java 中没有作用域范围运算符“::” 。Java利用点号做所有的事情,但可以不用考虑它,因为只能在一个 类里定义元素。即使那些方法定义,也必须在一个类的内部,所以根本没有必要指定作用域的范围。我们 注意到的一项差异是对static方法的调用:使用ClassName.methodName()。除此以外,package (包)的 名字是用点号建立的,并能用import关键字实现C++的“#include”的一部分功能。例如下面这个语句: import java.awt.*; (#include并不直接映射成import,但在使用时有类似的感觉。) (7) 与C++类似,Java含有一系列“主类型” (Primitive type ),以实现更有效率的访问。在Java 中,这些类 型包括boolean,char,byte,short,int,long,float 以及double 。所有主类型的大小都是固有的,且与具 体的机器无关 (考虑到移植的问题)。这肯定会对性能造成一定的影响,具体取决于不同的机器。对类型 的检查和要求在Java里变得更苛刻。例如: ■条件表达式只能是boolean (布尔)类型,不可使用整数。 ■必须使用象X+Y这样的一个表达式的结果;不能仅仅用“X+Y”来实现“副作用” 。 (8) char (字符)类型使用国际通用的16位Unicode字符集,所以能自动表达大多数国家的字符。 (9) 静态引用的字串会自动转换成String对象。和C及C++不同,没有独立的静态字符数组字串可供使用。 (10) Java增添了三个右移位运算符“”,具有与“逻辑”右移位运算符类似的功用,可在最末尾插入零 值。“”则会在移位的同时插入符号位 (即“算术”移位)。 (11) 尽管表面上类似,但与C++相比,Java数组采用的是一个颇为不同的结构,并具有独特的行为。有一 个只读的length成员,通过它可知道数组有多大。而且一旦超过数组边界,运行期检查会自动丢弃一个异 常。所有数组都是在内存“堆”里创建的,我们可将一个数组分配给另一个 (只是简单地复制数组句柄)。数 组标识符属于第一级对象,它的所有方法通常都适用于其他所有对象。 (12) 对于所有不属于主类型的对象,都只能通过new命令创建。和C++不同,Java没有相应的命令可以“在 堆栈上”创建不属于主类型的对象。所有主类型都只能在堆栈上创建,同时不使用new命令。所有主要的类 都有自己的“封装 (器)”类,所以能够通过new创建等价的、以内存“堆”为基础的对象 (主类型数组是一个 例外:它们可象C++那样通过集合初始化进行分配,或者使用new )。 (13) Java 中不必进行提前声明。若想在定义前使用一个类或方法,只需直接使用它即可——编译器会保证 使用恰当的定义。所以和在C++中不同,我们不会碰到任何涉及提前引用的问题。 (14) Java没有预处理机。若想使用另一个库里的类,只需使用import命令,并指定库名即可。不存在类似 于预处理机的宏。 (15) Java用包代替了命名空间。由于将所有东西都置入一个类,而且由于采用了一种名为“封装”的机制,它 能针对类名进行类似于命名空间分解的操作,所以命名的问题不再进入我们的考虑之列。数据包也会在单 独一个库名下收集库的组件。我们只需简单地“import” (导入)一个包,剩下的工作会由编译器自动完成。 (16) 被定义

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档