C++与Java的区别

来源:互联网 发布:邵子神数软件 编辑:程序博客网 时间:2024/06/15 10:02

一,C++与Java的区别

Java并不仅仅是C++语言的一个变种,它们在某些本质问题上有根本的不同:

(1)Java比C++程序可靠性更高。任何一个C++程序员都不得不承认C++语言在提供强大的功能的同时也提高了程序含BUG的可能性。Java语言通过改变语言的特性大大提高了程序的可靠性。

(2)Java语言不需要程序对内存进行分配和回收,在Java语言中,内存的分配和回收都是自动进行的,程序员无须考虑内存碎片的问题。

(3)Java丢弃了C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。

(4)Java语言中没有指针的概念,C++中的指针操作很容易出问题。

(5)Java用接口(Interface)技术取代C++程序中的多继承性。接口与多继承有同样的功能,但是省却了多继承在实现和维护上的复杂性。

Java和C++各有各的优势,不能单独的拿出来进行比较,要根据特定的应用场景,来选择具体使用哪门编程语言。


二,C++与Java的具体区别

1,面向对象

(1)继承

c++支持多重继承,这是c++的一个特征,它允许一个类有多个直接基类。多重继承功能很强,但使用复杂,而且会引起许多问题。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承带来的问题。


(2)是否完全面向对象

Java是完全面向对象的语言,所有函数和变量都必须是类的一部分。而c++允许将函数和变量定义为全局的。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。


2,语言机制

(1),指针

java中没有指针,无法找使用针来直接访问内存,从而有效的避免了C++/C中的指针操作带来的内存泄露等问题。


(2),操作符重载 

Java不支持操作符重载,操作符重载被认为是c++的突出特征,Java语言不支持操作符重载是为了保持Java语言尽可能简单。


(3),编译预处理

Java不支持预处理功能,c/c++在编译过程中都有一个预编泽阶段,预处理器为开发人员提供了方便,但增加了编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c++预处理器的功能类似。


3,内存管理
Java程序中所有的对象都是用new操作符创建的,这个操作符类似于c++的new操作符。
Java自动进行内存回收操作,不需要程序员手动删除动态创建的对象。而c++中必须由程序员手动释放内存资源, 增加了程序设计者的负担。Java中当一个对象不被再用到时,内存回收器将给它加上标签以示删除。JAVA里内存回收操作是以线程方式在后台运行的,利用空闲时间工作。


4,语言类型

常见的编程语言有两种,一是:编译型语言,另一是:解释型语言。编译型与解释型,两者各有利弊。前者执行速度快(但也不能一概而论,部分解释型语言的解释器通过在运行时动态优化代码),同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它。而一些网页脚本、服务器脚本这样的对速度要求不高、对不同系统平台间的可移植性有一定要求的程序则通常使用解释性语言。

C++:

编译型语言写的程序执行之前,需要一个专门的编译过程,通过编译系统(不仅仅只是通过编译器,编译器只是编译系统的一部分)把高级语言编译成机器语言,把源代码编译成为机器语言文件,比如windows下的exe文件。exe文件就可以直接运行而不需要编译了,运行时不需要翻译,所以编译型语言的程序执行效率高。


JAVA:

解释型语言编写的程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是将它编译成字节码(可以理解为一个中间语言)。在运行的时候,由JVM将字节码再翻译成机器语言。

原创粉丝点击