首页 / 程序员 / 正文
C++和Java各自有哪些优缺点?请简述一下?
西瓜的奋斗 发表于:2020-3-26 10:32:27 复制链接 看图 发表新帖
阅读数:1841

下载APP可以快速和圈友联系

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C++和Java各自有哪些优弱点?请简述一下?


上一篇:python一般用来做什么?
下一篇:Linux系统的Linux中文怎样读?
温馨提示:
下载好向圈客户端可以随时随地交流学习经验,也可以和圈友发起聊天成为好友
好向圈www.kuaixunai.com是一个专业经验分享交流平台,请提供优质的经验内容分享,拒绝任何广告内容出现,低质量广告内容硬广包含手机号码,微信,QQ或者二维码,网址等形式存在可能会审核不通过 要想被各大搜索引擎尽快收录请做好内容原创工作,才会有更好的推广效果。
返回列表
使用道具 举报
条评论
您需要登录后才可以回帖 登录 | 立即注册
易水寒2017 发表于 2020-3-26 10:35:18 | 阅读全部
众所周知,Java和C++都是面向对象程序语言。也经常被拿出来进行优缺点的对比。那么我也来简单阐述一下这两种语言的优缺点以及在使用领域上的不同。
首先,两者都是开源社区的老大哥,开发者占整个开发语言市场的大半壁江山。
1、在运行效率上,人们都认为Java语言要慢于C++,这是由来已久的观念,但是随着JIT技术的不断成熟,Java语言的速度也不可同日而语。
而基于这种效率上差异的观点,C++也被更多的应用于游戏开发或者硬件设备开发上。而Java 更多的应用于企业级后台程序开发。
2、在多平台支持上,C++缺乏灵活性,而Java由于基于JVM,可以实现程序的跨平台编译运行,方便性更强于C++。
3、在语法规则上,Java要比C++简单许多。这是由于很多工作已经交由JVM进行处理,如Java的垃圾回收工作。而C++需要开发人员更细致地操作底层内存,手动释放对象,这也是许多C++程序员痛不欲生的地方。
4、另外,很多答案中都没有提到,两个语言对如今互联网行业的推动作用,我个人认为还是Java的功劳更大一些。这是因为Java语言的语法更加简单,更适合互联网后台程序的开发,而Java语言的生态系统也要更加多样化一些,极大地促进了如今电商领域的崛起。
总的来说,我个人还是非常喜欢Java语言的。但是作为同出一脉的两种语言来说,真的不应该分出个孰高孰低。只有更加适合哪种环境的开发而已。
希望我的回答可以帮助到你。


C++和Java各自有哪些优缺点?请简述一下?w1.jpg



C++和Java各自有哪些优缺点?请简述一下?w2.jpg



C++和Java各自有哪些优缺点?请简述一下?w3.jpg
使用道具 举报
回复
zkwzkwzkw 发表于 2020-3-26 10:36:47 | 阅读全部
C++的优点两级很擅长:
1:是比较贴近底层,所以处理很实时,
2:更加抽象,函数,类的编写可以和类型无关,只要关心逻辑就行了,这就是C++模板的威力,
C++的应用也很广泛,不仅仅局限在桌面领域JAVA 是个和操作系统无关的语言,就是说程序一旦写成就可以在有JAVA虚拟机的平台上运行,
而且JAVA 的用法,思想也比C++简单,好学,是现在快速开发的首选网上有很多,
但我觉得都是面向对象的语言,java去掉了指针,但是有引用(可以理解为指针),有垃圾回收站,
对于实时处理的设计还是用c++,自动化所付出的代价,两者都是面向对象的语言,
java现在用在网站比较多,容易入手,但是到后面基本上都是模式设计,或者使用别人定义好的类。
语言到最后都是需要使用的人,有空看下《敏捷软件开发》,有一定深度。至于比较细的区别,可以看看《java编程思想》中的附录B,里面很多细节,这本书还是值得一读的。
使用道具 举报
回复
123467215 发表于 2020-3-26 10:38:00 | 阅读全部
大多数程序员都认为C/C++会比Java语言快,甚至于觉得从Java语言诞生以来,“执行速度缓慢”的帽子就应当被扣在头顶,这种观点的出现是由于Java刚出现的时候JIT编译技术还不成熟,主要靠解释器执行的Java语言确实性能比较低下。但是在今天JIT编译技术已经发展成熟之后,Java语言有可能在速度上与C/C++争一日长短了吗?这个问题的答案,让我们从两者的编译器谈起。
使用道具 举报
回复
东阿御胶 发表于 2020-3-26 10:43:00 | 阅读全部
JAVA的优势:跨平台;开源;有甲骨文,ibm等大公司的强力支持;简单易学,语法规则。
C++最大的优势在于她的通用和全面。
JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,摒弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。
Java和c++的相似之处多于不同之处,但两种语言有几处主要的不同使得Java更容易学习,并且编程环境更为简单。
我在这里不能完全列出不同之处,仅列出比较显著的区别:
1.指针
JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。
2.多重继承
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。
3.数据类型及类
Java是完全面向对象的语言,所有函数和变量都必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。
4.自动内存管理
Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c++的new操作符。下面的语句由一个建立了一个类Read的对象,然后调用该对象的work方法:
Read r=new Read();
r.work();
语句Read r=new Read();在堆栈结构上建立了一个Read的实例。Java自动进行无用内存回收操作,不需要程序员进行删除。而c十十中必须由程序员释放内存资源,增加了程序设计者的负担。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。
5.操作符重载
Java不支持操作符重载。操作符重载被认为是c十十的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。
6.预处理功能
Java不支持预处理功能。c/c十十在编译过程中都有一个预编泽阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加了编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c十十预处理器的功能类似。
7. Java不支持缺省函数参数,而c十十支持
在c中,代码组织在函数中,函数可以访问程序的全局变量。c十十增加了类,提供了类算法,该算法是与类相连的函数,c十十类方法与Java类方法十分相似,然而,由于c十十仍然支持c,所以不能阻止c十十开发人员使用函数,结果函数和方法混合使用使得程序比较混乱。
Java没有函数,作为一个比c十十更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。
8 字符串
c和c十十不支持字符串变量,在c和c十十程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(string和stringBuffer)来实现的,这些类对象是Java语言的核心,用类对象实现字符串有以下几个优点:
(1)在整个系统中建立字符串和访问字符串元素的方法是一致的;
(2)Java字符串类是作为Java语言的一部分定义的,而不是作为外加的延伸部分;
(3)Java字符串执行运行时检空,可帮助排除一些运行时发生的错误;
(4)可对字符串用“十”进行连接操作。
9 goto语句
“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。
l0.类型转换
在c和c十十中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c十十中可将一浮点值赋予整型变量,并去掉其尾数。Java不支持c十十中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。
11.异常
JAVA中的异常机制用于捕获例外事件,增强系统容错能力
try{//可能产生例外的代码
}catch(exceptionType name){
//处理
}
其中exceptionType表示异常类型。而C++则没有如此方便的机制。
使用道具 举报
回复
媼蓿 发表于 2020-3-26 10:49:59 | 阅读全部
C++和Java一样,都是面向对象的程序语言。
1、运行过程不同
Java源代码通过Java编译器编译成字节码,然后由JVM解释运行,而C++经过编译和链接后生成可执行的二进制代码,可以直接执行,因此一般Java的执行速度比C++慢,但是Java能够跨平台
2、面向对象
Java是完全面向对象的,除了基本数据类型外,其他的所有数据类型都是类,都直接或间接继承自Object类,所有的数据,变量和函数都是类的一部分,Java语言中不存在局部变量和全局变量,而C++具有面向过程和面向对象的特点,可以有全局函数和全局变量。
3、指针
Java中没有指针的概念,避免了使用指针引起的问题,如内存泄漏,提高了程序的安全性
4、单继承和多继承
Java不支持多重继承,只能继承一个类,但是可以实现多个接口,接口也有多态的特性,实现了C++的多重继承的功能并且避免了多重继承的复杂性
5、内存管理
Java提供了垃圾回收器实现垃圾的自动回收,不需要程序员显式的管理分配的内存,在C++中,需要程序员显式的申请和释放内存,通常把释放内存的代码放到析构函数中,Java没有析构函数,程序员也不需要关系什么时候释放内存。
6、操作符重载
Java不支持操作符重载,使Java语言变得更加简单
7、预处理功能
Java不支持预处理功能,而C++支持增加了编译的复杂性
8、缺省函数参数
Java不支持缺省函数参数
9、自动强制类型转换
自动强制类型转换使得程序不安全,Java不支持自动强制类型转换,如浮点型赋值给整型变量,必须显式的进行类型转换
10、goto语句
goto语句使程序变得混乱,Java不支持goto语句,C++支持
11、结构和联合
因为C++中的结构和联合中所有成员都是公有的,导致程序的安全性减低,而Java不支持结构和联合,所有的数据和操作都封装在类中
12、Java具有平台无关性,对每种数据类型都分配固定长度的空间,而C++同一数据类型在不同的平台上会分配不同长度的空间
使用道具 举报
回复
相关推荐
广告合作以及侵权投诉客服QQ:1623331347 江苏好向圈信息科技有限公司 网站地图1 网站地图2