您的位置:首页 > 编程语言 > C语言/C++

浅谈C++和JAVA的区别

2014-03-16 22:42 183 查看
通常,我们聊到JAVA,第一影响“面向对象”,“没有指针,编写效率高,执行效率较低”。更深入、专业一点就谈论 “JAVA内存自动回收,多线程编程”。

本人对两者差别进行搜索和总结如下:(欢迎补充)

JAVA的应用在高层,C++在中间件和底层

JAVA离不开业务逻辑,而C++可以离开业务为JAVA们服务

java语言给开发人员提供了更为简洁的语法;取消了指针带来更高的代码质量;完全面向对象,独特的运行机制是其具有天然的可移植性。

java 是运行在jvm上的,之所以说它的可移植性强,是因为jvm可以安装到任何的系统

c++不是不能在其他系统运行,而是c++在不同的系统上运行,需要不同的编码(这一点不如java,只编写一次代码,到处运行)

java 在web 应用上具有c++ 无可比拟的优势

java在桌面程序上不如c++实用,c++可以直接编译成exe文件

指针是c++的优势,可以直接对内存的操作,但同时具有危险性,

垃圾回收,c++用析构函数回收垃圾,java自动回收

java 丰富的插件是java 发展如此迅速的原因

java 很大的沿袭了c++的一些实用结构

对于底层程序的编程以及控制方面的编程,c++很灵活,因为有句柄的存在。

Java并不仅仅是C++语言的一个变种,它们在某些本质问题上有根本的不同:

(1)Java比C++程序可靠性更高。有人曾估计每50行C++程序中至少有一个BUG。姑且不去讨论这个数字是否夸张,但是任何一个C++程序员都不得不承认C++语言在提供强大的功能的同时也提高了程序含BUG的可能性。Java语言通过改变语言的特性大大提高了程序的可靠性。

(2)Java语言不需要程序对内存进行分配和回收。Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,在Java语言中,内存的分配和回收都是自动进行的,程序员无须考虑内存碎片的问题。

(3)Java语言中没有指针的概念,引入了真正的数组。不同于C++中利用指针实现的“伪数组”,Java引入了真正的数组,同时将容易造成麻烦的指针从语言中去掉,这将有利于防止在c++程序中常见的因为数组操作越界等指针操作而对系统数据进行非法读写带来的不安全问题。

(4)Java用接口(Interface)技术取代C++程序中的多继承性。接口与多继承有同样的功能,但是省却了多继承在实现和维护上的复杂性。

Java和C++各有各的优势,无需争论那种语言好,哪种语言不好,能够存在就一定有它的优势,只要你决定了要学编程就扎实的学好,编程语言都是相同的,学会一种,其他的学起来就很容易了。
( 最官方的资料当然是维基百科http://zh.wikipedia.org/wiki/Java%E5%92%8CC%2B%2B%E7%9A%84%E5%B0%8D%E7%85%A7
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: