java和c++都是面向对象的语言,都使用面向对象思想(封装,继承,多态等)。
1、java语言为解释型语言,其运行过程为:程序源代码通过java编译器编译成字节码,然后在jvm中解释执行。而c++语言是编译型语言,源代码通过编译和链接之后生成可以执行的二进制代码。因此,java的执行速度比c++的执行速度慢,但是java能够跨平台执行。
2、java是纯面向对象语言,所有的代码都必须写在类中(类中实现)。除了基本数据类型,所有的类型都是类。此外,java语言中不存在全局变量和全局函数,而c++兼备面向过程(C语言是面向过程编程的语言)和面向对象编程的特点,可以定义全局变量和全局函数。
3、与c++相比,java中没有指针的概念,这有效的防止了指针的误操作导致系统出现故障,从而使得程序程序更加安全。
4、与c++相比,java不支持多继承,一个类最多只能继承一个父类,但是java语言中提供了借口的概念,一个类可以同时实现多个接口。由于接口也具有多态性,因此java语言中可以通过实现多个接口来实现c++中的多重继承的目的。
5、在c++中开发人员需要去管理对内存的分配以及释放,而java语言中提供了垃圾回收器,java程序中的内存释放都由垃圾回收器自动回收,不需要程序显示的管理内存。java中虽然没有析构函数,但是引入了一个finalize()方法,当垃圾回收器将要释放无用对象的内存地址时,会先调用该对象的finalize()方法,因此,开发人员不需要关心也不要知道对象占用的内存空间何时被释放。
6、c++支持运算符的重载,java不支持运算符的重载。java没有预处理器,虽然不支持预处理功能(包括头文件,宏定义等)。但是java提供了import机制,这与c++的预处理器功能类似。
7、c++支持goto语句,但是java不支持,但是goto语句是java 的保留关键字。
8、c++支持自动强制类型转换,java不支持自动强制类型转换,必须由开发人员进行显示地强制类型转换。
9、java具有平台无关性,对每种数据类型都分配固定长度,而c++不用,同一个数据类型在不同的平台上分配不同的字节数。
10、java包含了一些标准库,比如提供了用于数据库访问的jdbc库,用于实现分布式对象的rmi等标准库。而c++则是依靠一些非标准的,尤其厂商提供的库。