优点
1.简单易学:Java比C/C++简单,学起来比C/C++容易;
2.面向对象:Java完全对象化,比如数组在Java中是一个对象,含有length这个属性,而不像C++中数组是一个指针,所以访问数组,Java会进行边界检查,更加安全,但是牺牲了速度。同时因为Java中所有类都会继承Object这个基类,所以可以把几个不相干的类用基类联系起来,比如放在同一个数组中;
3.安全性:Java中没有指针这样不安全(虽然指针速度很快)的概念;
4.内存管理机制:Java中有完善的内存管理机制,能自动垃圾回收,最大可能降低内存溢出问题,同时提高编程效率;
5.异常处理:Java中有完善的异常处理机制(标准C++中不够完善);
6.保存数据:Java中保存数据时对象本身是在堆里,同时靠在栈里的句柄与之连接,这个设计更合理;
7.标准库完善:Java标准库完整,相比之下C++除了一个STL就没了,实际C++编程中需要大量使用第3方库。这很大程度上是因为Java有一些商业公司支持,更新速度快,而C++只有一个可怜的标准委员会,上一个C++标准 版本还是C++98
8.跨平台性:Java因为是把程序编译为字节码,运行时需要JVM把字节码再翻译为机器码,所以他跨平台,一次编译到处运行,但这也是他慢的根本原因。
9.多线程:Java原生支持多线程(C++仅靠标准库办不到),原生的UI,如AWT Swing。
缺点
1.运行速度:Java比C/C++慢,Java1.0比C慢20倍,现在的Java1.6运行速度也只是C的一半;
2.对底层的支持:C++中可以直接插入汇编能直接操控底层的硬件,所以操作系统还是用C写;
3.适用范围:Java办到的C++一定办得到,而C++办得到的Java则不一定;
4.发展:Sun被甲骨文收购之后,Java的发展很受影响;
5.用户体验:C++编译的程序可以直接运行,Java需要安装JRE有几十MB,影响产品发布后的用户体验。