暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
附录B 对比C++和java.pdf
231
7页
0次
2021-02-22
40墨值下载
附录
B
对比
C++
Java
“作为一名
C++
程序员,我们早已掌握了面向对象程序设计的基本概念,
Java
的语法无疑是非常熟悉的。事实上,
Java
本来就是从
C++
衍生出来的。
然而,
C++
Java
之间仍存在一些显著的差异。可以这样说这些差异代表
着技术的极大进步。一旦我们弄清楚了这些差异,就会理解为什么说
Java
是一
种优秀的程序设计语言。本附录将引导大家认识用于区分
Java
C++
的一些
要特征。
(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
用包代替了命名空间。由于将所有东西都置入一个类,而且由于采
用了一种名为“封装”的机制,它能针对类名进行类似于命名空间分解的操作,
of 7
40墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

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