`
iwebcode
  • 浏览: 2007804 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Java语言和C++语言的差异

 
阅读更多

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

不再有指针(Pointer)的概念

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

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

不再有函数(Function)的概念

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

不再使用structure、union和typedef。

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

不再有类的多重继承(Multiple Inheritance)

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

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

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

取消了自动类型转换。

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

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

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

取消了goto语句

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

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

分享到:
评论

相关推荐

    Java语言与C++语言的差异总结

     下面我总结一下Java语言与C++语言的各种差异。  1、Java用来操纵对象的引用可以先初始化再指向对象,而C++的引用必须在初始化时指向对象。  2、Java类除static和final外其他函数定义默认是虚函数,而C++用v

    Java与C_C++异同

    Java与C_C++异同,下载大神的,分享给你们

    java语言的详细入门教程

    .1 Java语言的发展 1 1.1.1 Java语言的产生 1 1.1.2 Java语言的发展 1 1.2 Java语言的特点 2 1.3 面向对象与面向过程的差异 3 1.3.1 面向过程思想回顾 4 1.3.2 面向对象思想介绍 4 1.4 面向对象程序设计中的主要概念...

    Java与C++的比较

    Java和C++都是非常流行的计算机编程语言,Java作为C++衍生出来的一种优秀的语言,和C++有很多相似的地方,但仍然存在一些显著的差异,文章比较了这两种语言的主要差别,把握住两种语言的差别,对于我们学习能起到...

    Java 和 C/C++ 的对比试验报告+代码

    设计一个实验,通过 n!的运算,了解不同数据类型在内部存储上的差别。用不同数据类型进行结果值...2. Java 的 数值类型 整型 和 浮点 计算过程中注意类型不能 混用 3. 关注在不同的程序语言环境下,关键语句的差异。

    java JGL标准程序库,类似C++的STL

    这个库尽可能遵照STL的设计(照顾到两种语言间的差异)。JGL实现了许多功能,可满足对一个集合库的大多数常规需求,它与C++的模板机制非常相似。JGL包括相互链接起来的列表、设置、队列、映射、堆栈、序列以及反复器...

    java基础学习笔记 java整合技术 java工具类.rar

    java较为简单,例如:java不再支持多继承,C++是支持多继承的,多继承比较复杂,C++中有指针,java中屏蔽了指针的概念,避免了绝大部分的指针越界和内存泄露的问题,这里说明一下,java语言低层是用C++实现的,并不...

    Java2简明教程

    此外,本书还突出了Java语言与C/C++的异同点,从而也非常适合于具有C/C++编程经验,又想转向Java编程的读者阅读。 本书语言流畅、实例丰富,同时配有大量的习题,并在网上提供了该书的电子教案和习题参考答案,特别...

    C/C++/JAVA/Python代码统计工具

    该工具支持常用C/C++/JAVA/PYTHON/PERL等流行语言的代码统计工具,便于项目统计和项目度量输出。内附工具使用教程和命令参数,可以支持代码差异统计

    java程序高级应用及开发

    Java技术水平也将逐渐与世界同步 1.1 Java的诞生和发展规律 1.2 与C和C++语言的异同 1.3 Java平台 ......

    java大作业,课程设计

    3 Java语言与C++的异同分析总结。 4 选用C和java语言时编程算法程序有什么不同,有什么优势和劣势。 5 自己编程学习的级别和状态。以及自己以后的编程学习的计划和想法。 6 下面3道题目中选一道,给出算法分析和程序...

    Java大作业

    3 Java语言与C++的异同分析总结。 4 选用C和java语言时编程算法程序有什么不同,有什么优势和劣势。 5 自己编程学习的级别和状态。以及自己以后的编程学习的计划和想法。 6 下面3道题目中选一道,给出算法分析和程序...

    C++、C语言和JAVA开发的区别

    由于C++要兼容C的内容,而C是面向过程的,所以C++不可避免地出现过程影子,并不算是完全的面向对象的程序设计语言。例如总得要有main或winmain之类的过程吧。 2。C++的移植能力没有java好。 由于C++的事实标准的...

    C++程序设计课程讲稿

    程序开发效率(C++\Java)。 C语言 是目前世界上最流行和实用的一种计算机高级程序设计语言。最初的C语言只是为描述和实现 UNIX 操作系统提供一种工作语言而设计的,后随其宿主系统UNIX的普及而被引起注意,又因其...

    C/C++ 编程中多国语言处理

    特别的,相对于 JAVA 语言,C/C++ 在处理编码问题上有更大的困难。本文避免纠缠不同编码格式的具体异同,以 Unicode 为,以简体中文为例,从工程应用角度分析编码问题存在的原因,不仅提出 C/C++ 标准库编程的解决...

    浅析Java、C/C++、JavaScript、PHP、Python分别用来开发什么?

    用任何编程语言来开发程序,都是为了让计算机干活,比如编写一篇文章,下载一首MP3等,而计算机干活的CPU只认识机器的指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令

    leetcode题库-offer:把《剑指offer》的题目用Java语言(书中是C++)实现了一遍,希望能给大家一些参考

    语言(书中是 C++)实现了一遍,希望能给大家一些参考。 : 注:我的看的是 2014 年出版的,题目序号和 2017 版有差异,2017 中的贪婪算法部分在 2014 版中没有。 我的代码和其他人的有什么不同: 我的代码中不仅...

    C#特点详细介绍,与其他语言的区别

    c#的特点,与c,c++,java的区别

    EDA/PLD中的C/C++ 编程中多国语言处理

    特别的,相对于 JAVA 语言,C/C++ 在处理编码问题上有更大的困难。本文避免纠缠不同编码格式的具体异同,以 Unicode 为核心,以简体中文为例,从工程应用角度分析编码问题存在的原因,不仅提出 C/C++ 标准库编程的...

    java面试宝典

    231、Java语言的11个关键特性. 54 232、说出Servlet的生命周期,并说出Servlet和CGI的区别。 55 233、说出在JSP页面里是怎么分页的? 55 234、存储过程和函数的区别 55 235、事务是什么? 55 236、游标的作用?如何...

Global site tag (gtag.js) - Google Analytics