C语言与JAVA的区别是什么(推荐)

 更新时间:2017年04月04日 11:38:26   投稿:mrr  
本文是小编给大家收集整理的关于C语言与Java的区别介绍,非常不错,具有参考借鉴价值,需要的朋友参考下吧

首先来说说他们各自的历史:C语言的发展历史

C语言的发展颇为有趣。它的原型ALGOL 60语言。(也成为A语言)

1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。

1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。

1970年,贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。

而在1973年,B语言也给人“煮”了一下,贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。

1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。

1988年,随着微型计算机的日益普及, 出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准 3.C语言的主要特点 。C语言发展迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。用C语言加上一些汇编语言子程序, 就更能显示C语言的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。

在来说说Java

Java是一个由Sun公司开发而成的新一代编程语言。使用它可在各式各样不同种机器、不同种操作平台的网络环境中开发软件。不论你使用的是哪一种WWW浏览器,哪一种计算机,哪一种操作系统,只要WWW浏览器上面注明了“支持Java”,你就可以看到生动的主页。Java正在逐步成为Internet应用的主要开发语言。它彻底改变了应用软件的开发模式,带来了自PC机以来又一次技术,为迅速发展的信息世界增添了新的活力。

Sun的Java语言开发小组成立于1991年,其目的是开拓消费类电子产品市场,例如,交互式电视、烤面包箱等。Sun内部人员把这个项目称为Green,那时WorldWideWeb还在图纸上呢。该小组的是JamesGosling,是一位非常杰出的程序员。他出生于1957年,于1984年加盟SunMicrosystem公司,之前在一家IBM研究机构工作。他是SunNeWs窗口系统的总设计师。也是第一个用C实现的EMACS的文本编辑器COSMACS的开发者。

在研究开发过程中,Gosling深刻体会到消费类电子产品和工作站产品在开发哲学上的差异:消费类电子产品要求可靠性高、费用低、标准化、使用简单,用户并不关心CPU的型号,也不欣赏专用昂贵的RISC处理器,他们需要建立在一个标准基础之上,具有一系列可选的方案,从8086到80586都可以选取。

C语言和JAVA其实是很相识的,最直接的区别就在与,一个是全面向过程,一个是面向对象。而且JAVA是可以跨平台的。而C语言不能,但能够直接操作硬件,并且生成机器码的效率高。C语言多了一个,指针也是C语言的精髓,想要学好C语言,指针就必须学好。JAVA是没有指针的。

总的来说,C语言是基础语言,JAVA是面向对象的一门语言,在学习JAVA语言前,我觉得还是最好先学习C语言,因为C语言的语法比较简单,只是他的亮点指针很容易出错,想要好好的运用指针是件很难的事,当然,用好了,对你的程序是有很好的帮助,反之,就会让你的程序崩溃掉。JAVA更实用于开发东西了,比较实用,因为JAVA面向对象嘛。和我们的思维很相似,所以开发起来就简单些,而C语言是面向过程,就和我们的思维方式有着差异,开发就很少了。而且很难。但因为C语言能够直接操作硬件,所以在一些嵌入式系统中,C语言是使用最广泛的语言。

在语法中

JAVA是从可以算是从C++发展而来的,因此Java与C语言的语法比较类似的。

在语法的程序库中

言有着自己的标准库,JAVA却有着自己得类库。

在内存的管理中

C语言在使用完一块内存时,要手动把内存释放掉,如果不释放的话,运行久了,程序很容易就会崩溃掉的。由于需要显式的归还内存,因此当一个函数需要将一块内存返回给调用者的时候,问题就比较复杂了。所以我们所以时要注意:(1) 在调用者中先分配好内存,作为参数传入到被调用的函数中(2) 在被调用的函数中分配,使用完后在调用者中释放(3) 在被调用函数中使用static变量,可以将该变量返回。

而JAVA基本不用考虑内存的问题,如果想用一个对象,new一个就可以,这个过程的背后则是JRE为对象分类的一定内存,当JRE发现你不再使用这个对象的时候,他就会自动回收内存,也就是说你只管借东西,不用管归还,因为与有人当你的跟班,在你不使用的时候就把东西归还了,不过这个过程还是有的,只不过是JRE作的而已。

语法中使用的基本类型

C语言有着很多的基本类型如:(boolean, char, byte, short, int, long, float, double,struct, union, enum)还有数组,指针等等。

在JAVA中:只有(boolean, char, byte, short, int, long, float, double)这8种基本类型和引用的。

在继承中

两种语言都支持方法重载的

C语言是多线继承,比如:小轿车和货车都继承了汽车类,奥迪2000是继承小轿车的,东风大卡车是继承货车,这样奥迪2000也可以继承货车,东风大卡车也可以继承小轿车。

JAVA是单继承的,比如:小轿车和货车都继承了汽车类,奥迪2000是继承小轿车的,东风大卡车是继承货车,这样奥迪2000就不能继承货车,当然东风大卡车也不能继承小轿车。

动态、静态绑定

在C语言中,为了允许运行时动态决定哪个函数被调用,一个函数必须用virtual修饰。virtual关键字被自动继承,用以支持多态;凡是没有用virtual修饰的成员函数(包括static)都是静态绑定的,即在编译时决定调用哪个版本

而在Java中,除了static、final、private是静态绑定以外,所有方法一律按动态绑定处理

初始值

在C语言中,是可以不初始化使用的

而在JAVA中,是必须初始化值的

抽象方法或抽象类

C语言的对等语法是“纯虚函数”和“抽象类”

Java使用abstract关键字修饰抽象方法或抽象类,final类不能被继承

都使用抽象类作为继承层次中的基类,提供一般概念,由子类实现其抽象方法,且抽象类都不能被直接实例化为对象

super

JAVA super关键字,指代父类对象,通常被用于调用父类的构造方法或一般方法
C语言没有super关键字

this

两者都有,都是只当前的对象

package

C语言没有

Java有package的概念,可以将类组织起来,便于打包和部署,也有利于类的安全。

在语法中还有很多的差异,就不一一列出来了,可以看出,JAVA比C语言要精简很多,在生活上的实用性也很强,C语言却是哎操作内存上比较强。也就是说JAVA比较适合在上层工作,只要我们懂得接口就好,而C语言却是在网络下层工作的,要对协议比较了解。总之,各有各的好处,各有各的领域。

以上所述是小编给大家介绍的C语言与JAVA的区别是什么的相关知识,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

相关文章

  • C/C++函数参数声明解析int fun() 与 int fun(void) 的区别讲解

    C/C++函数参数声明解析int fun() 与 int fun(void) 的区别讲解

    C++中int fun()和int fun(void)的区别在于函数参数的声明方式,前者默认允许任意参数,而后者表示没有参数,通过清晰的实例源代码,详细解释了它们在函数声明和调用中的不同之处,这篇文章介绍了C/C++函数参数声明int fun()与int fun(void)的差异,需要的朋友可以参考下
    2024-01-01
  • 详解C++11中的类型推断

    详解C++11中的类型推断

    C++11中为了更好的支持泛型编程,提供了 auto和decltype两个关键词,目的就是提供编译阶段的自动类型推导,这篇文章主要介绍了C++11中的类型推断,需要的朋友可以参考下
    2023-01-01
  • C++ Protobuf的学习使用指南

    C++ Protobuf的学习使用指南

    protocol buffers是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等,下面就来跟随小编一起简单学习一下它的使用吧
    2023-07-07
  • C++ String部分成员模拟实现流程详解

    C++ String部分成员模拟实现流程详解

    我们先不直接实现完整版的string,先实现简易版的string部分成员来基本了解下它的框架,以及以后来学习深浅拷贝的问题。这样有循序渐进的过程嘛
    2022-08-08
  • 使用UART与PC通信实现msp430g2553单片机超声波测距示例

    使用UART与PC通信实现msp430g2553单片机超声波测距示例

    这篇文章主要介绍了使用UART与PC通信实现msp430g2553单片机超声波测距示例,需要的朋友可以参考下
    2014-05-05
  • C++函数对象详解附带实例

    C++函数对象详解附带实例

    这篇文章主要介绍了C++函数对象详解附带实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Qt实现http服务的示例代码

    Qt实现http服务的示例代码

    这篇文章将为大家详细讲解有关Qt如何实现http服务,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获
    2023-04-04
  • C语言详解数据结构与算法中枚举和模拟及排序

    C语言详解数据结构与算法中枚举和模拟及排序

    枚举和模拟其实是没什么算法可言的,大多数都是按照题目意思去写,这里提供快排和归并的两个模板,感兴趣的朋友来看看吧
    2022-04-04
  • C语言折半查找法的超详细讲解

    C语言折半查找法的超详细讲解

    折半查找法也叫做⼆分查找,顾名思义就是把数据分成两半,再判断所查找的key在哪⼀半中,再重复上述步骤知道找到⽬标key,下面这篇文章主要给大家介绍了关于C语言折半查找法的相关资料,需要的朋友可以参考下
    2022-06-06
  • 关于STL中list容器的一些总结

    关于STL中list容器的一些总结

    list就是数据结构中的双向链表(根据sgi stl源代码),因此它的内存空间是不连续的,通过指针来进行数据的访问,这个特点使得它的随即存取变的非常没有效率,因此它没有提供[]操作符的重载
    2013-09-09

最新评论