java和c++的区别

1.指针

c++中的指针是非常重要的环节,有着严格的指针回收机制。JAVA无法找到指针来直接访问内存,并且增添了自动的内存管理功能,从而有效地防止了内存操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。

2.多重继承

c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。但是java不支持多重继承,但允许一个类继承多个接口(extends+implement)。

3. 数据类型及类

C++可以定义全局变量或函数,允许在类外定义。但是java中的变量和函数必须在一个类中,不能在类外定义函数或者变量。Java中取消了c/c++中的结构和联合。

4. 自动内存管理

Java自动进行无用内存回收操作,不需要程序员进行删除。而c++中必须由程序员释放内存资源。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。

5.操作符重载

Java不支持操作符重载。操作符重载被认为是c++的突出特征。
6.预处理功能

Java不支持预处理功能。c/c++在编译过程中都有一个预编泽阶段,即众所周知的预处理器。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c++预处理器的功能类似。

7. Java不支持缺省函数参数,而c++支持

Java没有函数,作为一个比c++更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。

8.字符串

c和c++不支持字符串变量,在c和c++程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(string和stringBuffer)来实现的,这些类对象是Java语言的核心,用类在整个系统中建立字符串和访问字符串元素的方法是一致的。

9. goto语句

Java中没有goto语句,但是不排除之后升级会加入。c++支持goto语句,只是很少用到。

10.类型转换

在c和c++中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c++中可将一浮点值赋予整型变量,并去掉其尾数。Java允许int向float的隐式转换,但是float转int必须由程序显式进行强制类型转换。

11.异常

JAVA中的异常机制用于捕获例外事件,增强系统容错能力

try{//可能产生例外的代码 
}catch(exceptionType name){ 
//处理 
}

其中exceptionType表示异常类型。而C++则没有如此方便的机制。

12.关于对象的赋值操作

a1和a2是初始化的两个对象,在C++中,a2=a1的操作表示把a1对象的所有数据复制给a2,a2成为一个不同于a1的新的对象。在java中,该操作表示把a1对象的引用赋值给了a2,事实上a1,a2是同一个对象的引用,因此用a1进行操作和用a2进行操作都是操作的同一个对象。