快捷搜索:

JAVA和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中字符串是用类工具(strinR和stringBuffer)来实现的,这些类工具是Java说话的核心,用类工具实现字符串有以下几个优点:

(1)在全部系统中建立字符串和造访字符串元素的措施是同等的;

(2)J3阳字符串类是作为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++则没有如斯方便的机制。

您可能还会对下面的文章感兴趣: