一.Java的优点

  1. Java为纯面向对象语言,”everything is object”
  2. 平台无关性。由于java是解释性语言,编译器会把java编译成“中间代码”,然后在java虚拟机上解释执行。因为中间代码与平台无关,因此java语言可以很好的跨平台执行,具有很好的可移植性
  3. java提供很多内置库。例如提供对多线程的支持,网络通信的支持,以及垃圾回收器,极大的简化了开发人的程序设计工作,也不用对内存进行管理
  4. 提供了对web应用开发的支持。例如Applet,Servlet,JSP可以用来开发web应用程序,Scoket,RMI用来开发分布式应用程序的类库
  5. 有很好地安全性和健壮性。java提供一个防止恶意代码攻击的安全机制(数组边界检测和ByteCode校验等),还提供强类型机制,垃圾回收器,异常处理和安全检测机制使java程序更有健壮性
  6. 去除了C++中容易混淆,不易理解的特性,如指针,头文件,结构,单元,运算符重载,虚拟基础类,多重继承等,使程序更加严谨,简洁

二.Java与C/C++的异同

  1. java为解释性语言,运行过程为:程序源代码经过java编译器编译成字节码,然后由JVM执行;而c/c++
    为编译性语言,源代码经过编译和链接后生成可执行的二进制代码。因此,java的执行速度比c/c++慢,但java能够跨平台,c/c++不能
  2. java为纯面向对象语言,代码包括函数,变量等,必须在类中实现,除了基本数据类型(包括int,float等)外,所有类型都是类,此外,java中不存在全局变量或全局函数,而c++兼容面向对象和面向过程编程的特点,可以定义全局变量和全局函数
  3. java中没有指针,有效防止c++中操作指针可能引起的系统问题,程序更安全
  4. java不支持多重继承,但可以通过实现多个接口来实现与c++中多重继承类似的目的,因为接口也是具有多态性质的
  5. c++中需要开发人员去管理内存的分配,包括申请与释放,通常把要释放的资源放到析构函数中。java中提供垃圾回收机制实现垃圾自动回收,无需关心何时释放无用对象内存。当垃圾回收器将要释放无用对象的内存时,会首先调用该对象的finalize()方法。
  6. c++支持运算符重载,java不支持
  7. c++支持预处理(头文件,宏定义等),java没有预处理功能,但是提供的import机制和c++中预处理功能相似
  8. c++支持默认函数参数,java不支持
  9. c/c++支持goto语句,java不提供(但java中goto是保留关键字)
  10. java不支持自动强制类型转换,必须由开发人员进行显式的强制类型转换
  11. java具有平台无关性,每种数据类型都分配固定长度,例如int类型总是占据32位,而c/c++中同一数据类型在不同平台会分配不同的字节数
  12. java提供对注释文档的内建支持,所以源码文件也可以包含他们自己的文档,通过一个单独的程序,可以将这些文档信息提取出来,并重新格式化成html
  13. java包含了一些标准库。例如提供用于访问数据库的jdbc库,用于实现分布式对象RMI等标准库,而c++则依靠一些非标准的,有其他厂商提供的库