C++ | java | |
---|---|---|
支持编程的类型 | 允许面向过程编程和面向对象的编程 | 支持面向对象的编程模型 |
执行速度 | C++比java快。原因在编译过程,对象的创建,检查机制等问题上可以看到。 | |
编译过程 | C++源码一次编译,直接在编译的过程中链接了,形成了机器码。 | Java源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。 java比C++多一层字节码的处理,这样可以保证在不同的机器上运行,所以比C++慢一点。 |
对象的创建 | C++中,很多局部变量和对象的创建都是保存在栈内存中的,可以直接访问,所以效率较java而言高。 | 在java中一切皆对象(这里忽略基本类型的情况),而对象的创建时通过new实现的,就是说对象的本身都是保存在堆内存的,栈内存中只保存了一个对象的引用。这样在获得对象的时候实际上可以认为是间接寻址,速度就会比较慢。 |
检查机制 | C++程序中,这些检查都是需要程序员自己去检查判断和处理的,速度是上来了,在安全性和稳定性上就不如java了。 | java虚拟机本身在运行时对程序进行很多的检查,比如检查数组越界,检查是否空指针,检查对象是否需要回收等等,充分地保证了java程序的安全和稳定性,但是用来相对C++较多的时间来检查了。 |
多继承 | C++提供多继承,关键字virtual用于在多继承期间解决出现的问题 | java中类都是单继承的 但是继承都有传递性,同时Java中的接口是多继承,类对接口的实现也是多实现。 |
安全性与稳定性 | 程序员检查错误,相对低 | 系统检查,相对高 |
I/O机制 | I/O机制使用cout,cin语句。 cout<<x<<endl; cin<<x; | I/O机制复杂,因为一次只读取一个字节。 system.in system.out.printlin(); |
与其他语言的兼容性 | 除了一些特殊情况以外,与C语言兼容 | 没有向后兼容任何以前的语言。语法受C/C++的影响 |
范围解析运算符 | C++具有范围解析运算符(:),用于定义类外部的方法,并从具有相同名称的本地变量也存在的范围内访问全局变量 | java没有范围解析运算符(:),方法定义必须在类中进行。 |
键入 | 原始类型与对象类型保持一致 | 原始和对象类型不同 |
结构体 | 支持结构体 | 不支持结构体 |