Java和C++区别(java和c区别大吗)
Java和C++都是面向对象语言。也就是说,它们都能实现面向对象思想(封装、继承、多态)。而由于C++为了照顾大量C语言使用者,而兼容了C,使得自身成为带类的C语言,多多少少影响了其面向对象的彻底性!Java则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,摈弃了其他语言的不足之处,从根本上解决了C++的固有不足。
Java和C++的相似之处多于不同之处,但Java语言更容易学习,而且编程环境更为简单。
指针
C++:指针是重要的数据结构,父类和子类的对象之间很多时候是依靠指针联系的。但容易操作失误而造成系统崩溃。
Java:取消了指针操作,只是虚拟机内部使用指针,程序员不得使用。保证了安全性。
多重继承
C++:支持多重继承,允许多个父类派生一个子类。缺点是使用起来很复杂。
Java:不支持多重继承,但是允许一个类继承多个接口,从而实现了C++多重继承的功能,又避免了C++中的多重继承实现方式带来的诸多不便。
操作符重载
C++:支持操作符重载,使用复杂。
Java:不支持操作符重载,使用简单。
数据类型和类
C++:允许将函数和变量定义为全局的。
Java:所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。
字符串
C++:不支持字符串变量,在c和c十十程序中使用Null终止符代表字符串的结束.
Java:字符串是用类对象(strinR和stringBuffer)来实现的,这些类对象是Java语言的核心.
自动内存管理
C++:必须由程序员释放内存资源,增加了程序设计者的负担。
Java:无需程序员回收内存,无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。
预处理功能
C++:在编译过程中都有一个预编译阶段,使用#include语句,即众所周知的预处理器,增加了编译的复杂性。
Java:没有预处理器,但提供了import语句提供类似的功能。
goto和const
C++:存在goto和const。
Java:不存在
使用try-catch-finally代替goto
使用final代替const
类型转换
C++:支持自动强制类型转换。例如,在c十十中可将一浮点值赋予整型变量,并去掉其尾数。
Java:不支持c十十中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。
数据类型长度
C++:对于不同的平台,同一个数据类型分配不同的字节数,同样是int类型,在PC机中为二字节即16位,而在VAX-11中,则为32位.这使得C语言造成不可移植性。
Java:对每种数据类型都分配固定长度.比如,在Java中,int类型总是32位的。即无sizeof运算符。