分享
 
 
 

Java语言和C++语言的差异—老生常谈

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

[引子]这个话题并不新鲜,但是作为语言比较类的文章,从基础的、具体的、细节的层面来做比较,做小结,恐怕对beginner而言,应该是有所裨益的,想来会比论坛里的口水仗,抑或概念性的、大层面的比较要来得更为实际一些吧

Java采用了C及C++的语法格式,对于学习过C及C++的程序设计者来说,学习Java将有可能很轻松。但是,假如仔细检查Java语言的许多细节,就会发现Java取消了不少C及C++的特性,并且加入了一些新的特性。这些差异包括:

o 不再有指针(Pointer)的概念。

这是Java和C/C++在语法上的主要区别之一。在C及C++中,指针的灵活运用将会给程序设计带来极大的便利,但是其灵活性也成为了导致程序不稳定的一个主要因素。配合C及C++的内存治理策略,编程人员必须亲自跟踪自己向系统申请到的内存,最后确认交还给系统。并且在使用指针时,要随时注重是否超过合法的内存空间,造成Segmentation Fault或General Protection Fault这样的问题。

Java提供了一种引用(Reference)类型用来替代指针,通过引用去访问申请到的内存空间,可以确保不会访问不属于自己的内存空间,同时,程序的执行系统也可以动态地做内存垃圾回收工作,将那些被取消引用的内存空间回收给系统使用。这种动态内存分配机制,通过牺牲一定的灵活性,保证了内存分配一定程度上的安全性。

o 不再有函数(Function)的概念。

Java编程语言中,取消了结构化语言中最重要的部分--函数。在面向对象程序设计的概念里,对象的数据才是真正的主题,而处理对象数据的方法则必须依附在对象内才有意义。因此函数概念完全是不必要的。这强化了面向对象的开发策略。

o 不再使用strUCture、union和typedef。

事实上,在C++中就可以去掉C中的structure和union等对复杂数据的自定义结构类型了,因为类(Class)的定义方式完全可以做到这项功能。而typedef的功能也可以由类来实现。虽然C++这样的设计是为了和C兼容,但是这些究竟是多余的语言特点,在Java语言中便被抛弃了。

o 不再有类的多重继续(Multiple Inheritance)。

在C++中,多重继续是一项很强的功能,但也是较难把握的。取消多重继续降低了Java语言的功能,但它使Java看起来更为简洁。同时,Java也提供了接口(Interface)的方式,可以实现部分多重继续的作用。和多重继续的不同之处在于接口并不会定义类方法的内容,以及类中的数据。

o 不再有操作符重载(Operator Overloading)。

操作符重载被看作是C++的一个特色。在C++中,利用操作符重载,程序设计者通过对现有运算符赋予自己的定义,可以使程序看起来更为自然。但是,假如使用不当,也会使整个程序的可读性大受影响。同时,这一功能的存在也并非必要,程序设计者可以定义类中的方法来达到同样的目的。

o 取消了自动类型转换。

Java是一种强类型检查的编程语言,对于诸如浮点型变量赋值给整型变量这样的情况而言,在C++的语法中是答应的,最多只是在编译时给出警告信息。但是,在Java中,除非写明强制类型转换,否则编译无法通过。

o 不再有预处理器(preprocessor)功能。

利用C/C++中提供的#define、#include等预处理指令,厉害的程序设计人员可以自己开发一套只有自己才看得懂的宏指令集。从软件工程的角度上看,这对团队开发软件和整个软件的维护都是十分不利的。同时,预编译后的程序代码和程序设计者看到的程序代码是不同的。假如宏指令集有错,编译器产生的错误信息将不会是编程人员所预期的,这增加了程序调试的难度。

o 取消了goto语句。

在C++中,goto语句已经不被建议使用了,保留goto只是为了和C语法兼容。在Java中goto语句被完全抛弃了,与此同时,Java又扩大了break语句和continue语句的功能,通过使用break和continue,程序流程被答应在多层循环中跳转。

可以这样说,Java编程语言是一种简洁而有效的纯面向对象的编程语言。而C++语言因为要与C兼容(C++语言是作为C语言的一个超集被定义的),所以在面向对象的特性方面不如Java好。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有