区别一,Java没有指针的概念,从⽽有效地防⽌了在C/C++语⾔中,容易出现的指针操作失误(如指针悬空所造成的系统崩溃)。在 C/C++中,指针操作内存时,经常会出现错误。在Java中没有指针,更有利于Java程序的安全。
区别二,多重继承。C++⽀持多重继承,它允许多⽗类派⽣⼀个⼦类。也就是说,⼀个类允许继承多个⽗类。尽管多重继承功能很强,但使⽤复杂,⽽且会引起许多⿇烦,编译程序实现它也很不容易。所以Java不⽀持多重继承,但允许⼀个类实现多个接⼝。可见,Java既实现了 C++多重继承的功能,⼜避免了C++的许多缺陷。
区别三,数据类型。Java是完全⾯向对象的语⾔,所有⽅法和数据都必须是类的⼀部分。除了基本数据类型之外,其余类型的数据都作为对象型数据。例如对象型数据包括字符串和数组。类将数据和⽅法结合起来,把它们封装在其中,这样每个对象都可实现具有⾃⼰特点的⾏为。⽽C++将函数和变量定义为全局的,然后再来调⽤这些函数和变量,从⽽增加了程序的负担。此外,Java 还取消了C/C++中的结构和联合,使编译程序更简洁。
区别四,⾃动内存管理。Java程序中所有的对象都是⽤new操作符建⽴在堆栈上的,这个操作符类似于C++的“new”操作符。Java ⾃动进⾏⽆⽤内存回收操作,不需要程序员进⾏删除。当Java中⼀个对象不再被⽤到时,⽆须使⽤内存回收器,只需要给它加上标签以⽰删除。⽆⽤内存的回收器在后台运⾏,利⽤空闲时间⼯作。⽽ C++中必须由程序释放内存资源,增加了程序设计者的负担。
区别五,操作符重载。Java 不⽀持操作符重载,操作符重载被认为是 C++的突出特征。在 Java 中虽然类可以实现这样的功能,但不⽀持操作符重载,这样是为了保持Java语⾔尽可能简单。
区别六,预处理功能。C/C++在编译过程中都有⼀个预编译阶段,即预处理器。预处理器为开发⼈员提供了⽅便,但增加了编译的复杂性。Java 允许预处理,但不⽀持预处理器功能,因为 Java 没有预处理器,所以为了实现预处理,它提供了引⼊语句(import),它与 C++预处理器的功能类似。