Java与C++区别
比较项 |
Java |
C++ |
指针类型 |
没有 |
有 |
多重继承 |
不支持 |
支持 |
操作符重载 |
不支持 |
支持 |
结构和联合 |
取消 |
有 |
函数与变量 |
必须是类的一部分 |
允许将函数和变量定义为全局 |
new |
自动内存管理 |
由程序员自动释放内存资源 |
自动类型转换 |
不支持 |
支持 |
goto语句 |
不支持 |
支持 |
字符串 |
用类对象实现字符串 |
不支持字符串变量,在c和c十十程序中使用Null终止符代表字符串的结束 |
预处理器 |
没有 |
有 |
缺省函数参数 |
不支持 |
支持 |
速度 |
慢 |
快 |
面向对象语言 |
纯粹 |
不是纯粹 |
应用 |
做业务,逻辑,分布式.跨平台操作 |
底层操作 |
byte和 boolean |
有 |
无 |
逗号运算符 |
不支持 |
支持 |
全局变量 |
没有 |
有 |
枚举类型 |
没有 |
有 |
typedef |
没有 |
有 |
类的定义 |
一个类必须位于一个与类同名、但具有后缀.java的文件中 |
类名与类定义所在的文件名没有要求 |
main的定义 |
Public static void main(String[] args) |
int main()或者 int main(int argc,char* argv[]) |
包含文件 |
import |
#include |
对象的创建 |
所有的对象都创建在堆中,没有对象被创建在stack中 |
有的对象和变量是创建在stack中的 |
数组越界 |
java虚拟机要检测数组是否越界 |
不检测 |
long double |
无 |
有 |
模板 |
没有 |
有 |
类定义 |
没有标志结束的分号 |
有标志结束的分号 |
类声明 |
无 |
有 |
拷贝构造函数 |
无 |
有 |
作用域范围运算符“::” |
无 |
有 |
析构函数 |
无 |
有 |
virtual关键字 |
无 |
有 |
指向成员的指针 |
无 |
有 |