技术我爱编程

Java和C、C++的异同

2015-11-16  本文已影响261人  雅然风懿

C是“面向过程”的程序设计语言;C++,C#,java是“面向对象”的程序设计语言。举个例子:比如你想做一个模型飞机,利用“面向过程”的思想,你所想的就是,先做头再做身体,再做尾巴。它是一个比较顺着的概念。而如果利用“面向对象”的思想,你所想的就是,你要做飞机的话,它有翅膀,头部,身体,尾巴等各个部件,你先把各个部分做好,再考虑怎么把它们连接起来。

C语言特点:

作为一种结构化语言,层次清晰,便于按模块化方式组织程序,易于调试和维护;表现能力和处理能力极强。可以直接访问内存的物理地址,进行位(bit)一级的操作;实现了对硬件的编程操作,因此既可用于系统软件的开发,也适合于应用软件的开发;具有效率高,可移植性强等特点。

C#语言特点:

微软开发的一种编程语言,语法类似Java,几乎就是从Java的翻版。运行原理和Java也类似,也是通过运行时库的支持运行。不过支持的平台还很有限,C#目前只被Windows和Linux支持,Windows下的支持当然是由微软自己开发的,而Linux下的支持则有MONO支持。实际上,MONO也是把C#应用转化为Java应用而已,所以本质上,C#仍然只是被微软自己的操作系统支持。应用平台受到限制,是它最大的缺点。

C++语言特点:

1、在C语言的基础上进行扩充和完善,使C++兼容了C语言的面向过程特点,又成为了一种面向对象的程序设计语言;

2、可以使用抽象数据类型进行基于对象的编程;

3、可以使用多继承、多态进行面向对象的编程;

4、可以担负起以模版为特征的泛型化编程。

Java语言特点:

Java语言是一种完全的面向对象语言,虽然它的底层(运行时库)是用C语言开发的,可是并不依赖于C。因为Java的运行是在运行时库的支持下进行的,所以运行效率比起可以更接近底层的C/C++来说效率会有所影响,不过Java的类库采用很好的设计理念设计,非常好用,也非常实用,已经成为业界的一种标准开发语言。它的跨平台的特性尤其让很多开发者欢迎,你只需要开发一次就能在所有安装了Java运行时库的系统上运行。Java发展了十几年了,可以应用领域非常之广泛,Web开发有JSP,J2EE,桌面领域现在有JavaFX。

Objective-C特点:

1.Objecive-C属于Smalltalk学派,其面向对象与C++面向对象编程力的Simula 67(一种早期面向对象语言)学派不同;

2.Objective-C 是ANSI C的超集,扩展了C 语言使它具备面向对象设计的能力,例如类、消息‘继承;同时在Objective-C的代码中可以有C和C++语句,它可以调用C的函数,也可以通过C++对象访问方法;

3.Objective-C可以实现底层系统编程,另一方面可以支持利用动态架构进行开发。

Objective-C和C++的区别就是Objective-C更加灵活而降低了其编译的要求(这个降低并不是说编译就无要求,不会进行类型检查等),而C++提高编译的要求,在编译的过程发现更多的潜在错误,在运行前改正,同时会降低程序的灵活性。因此,在Smalltalk看来正确的程序在Simulr 67那里就无法通过。

Java和C++相同点:

都是面向对象语言,具有面向对象思想(封装、继承、多态),而由于C++兼容了C,使得自身成为了带类C的语言。而Java则是完全面向对象的语言。

不同之处:

Java无法让编程者通过指针来直接访问内存—无指针,并且自动添加了内存管理功能,从而有效的防止了C、C++语言中指针操作失误;但是Java虚拟机内部仍然使用了指针,只是程序员不可使用而已。

C++支持多重继承,允许多个父类派生一个类,但使用复杂;Java不支持多重继承,但允许实现多个接口,实现了C++多重继承的功能,又避免了C++中的多重继承实现方式带来的诸多不便。

Java程序中所有的对象都是用new操作符建立在内存堆上。可以自动进行无用内存回收操作,无需程序员进行删除,而C++需要程序员释放无用内存资源。

Java不支持操作符重载和预处理功能,而C++有预编译功能。

C/C++不支持字符串变量,而Java可以用类对象(String或者StringBuffer)来实现对字符串的操作。

Java中的异常机制用于捕获意外事件,增强系统容错能力。

上一篇下一篇

猜你喜欢

热点阅读