1.编译运行html
java是解释性语言,java程序在运行时类加载器从类路经中加载相关的类,而后java虚拟机读取该类文件的字节,执行相应操做.而C++编译的 时候将程序编译成本地机器码.通常来讲java程序执行速度要比C++慢10-30倍.即便采用just-in-time compiling (读取类文件字节后,编译成本地机器码)技术,速度也要比C++慢好多.java
2.内存管理c++
java的垃圾自动回收机制较C++由程序员管理内存效率更低。程序员
3.语法区别:编程
java中的原始数据类型在每一个操做系统平台长度都是相同,而C++这些数据类型长度是随操做系统的不一样而不一样,因此java在不一样操做系统上执行时有个转化过程。在c和c++中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c++中可将一浮点值赋予整型变量,并去掉其尾数。Java不支持c++中的自动强制类型转换,若是须要,必须由程序显式进行强制类型转换。安全
JAVA语言让编程者没法找到指针来直接访问内存无指针,而且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操做失误,如野指针所形成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部仍是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。函数
Java不支持操做符重载。操做符重载被认为是c++的突出特征。spa
Java没有函数,做为一个比c++更纯的面向对象的语言,Java强迫开发人员把全部例行程序包括在类中。同时,java中全部的对象都建立在堆中,没有对象被建立在stack中,而C++的函数入口地址、局部变量和临时对象是建立在stack中的。操作系统
Java不支持多重继承,但容许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。 Java 里对象不是值,全部的对象都经过引用来访问,"." 操做符是将一个对象的引用做为左操做参数来访问这个对象的成员.在C++中和这种作法等价的是 "->"。Java还取消了c/c++中的结构和联合。C++ 方法能够声明为虚函数, 虚函数是在运行期根据对象的类型才肯定的. C++ 方法缺省状况下不是虚的. 在 Java 里, 方法缺省状况下是虚的, 但可使用final
关键字使之声明为非虚的。指针
参考:维基百科http://zh.wikipedia.org/wiki/%E6%AF%94%E8%BE%83Java%E5%92%8CC%2B%2B