C语言与JAVA区别

来源:互联网 发布:侠客风云传32位优化 编辑:程序博客网 时间:2024/04/29 05:43
首先来说说他们各自的历史: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语言却是在网络下层工作的,要对协议比较了解。总之,各有各的好处,各有各的领域。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 档案在自己手里10年了怎么办 快递地址区域划分写错了怎么办 怀孕八个月肛门长个肉疙瘩怎么办呢 客户签了合同不要货了怎么办 不喂母乳宝宝只认识保姆了怎么办? 开创者比赛后没有买的鸽子怎么办 买回来小鸽子开家我敢了怎么办 小鸽子出壳后母鸽就不孵了怎么办 狗狗在笼子里一直叫怎么办 养了一年母鸽子不配对怎么办 血管翳云翳斑翳长满眼睛怎么办 鸽子训放50公里突然下雨了怎么办 安卓手机反应慢又卡怎么办 tcl安卓系统电视反应慢怎么办 狼人杀警长竞选一直平票怎么办 去驾校投诉教练被教练报复怎么办 哈尔滨机场大巴六点的飞机怎么办 山东德州恩城镇的农民怎么办养老险 我的世界联机平台房间进不去怎么办 验车时间过了3天怎么办 在携程订的机票和酒店不能退怎么办 千牛工作台中旺旺登录失败怎么办 掌通家园换手机号了忘了更改怎么办 qq注销了后绑定的全民k歌怎么办 小米账号绑定的手机号注销了怎么办 微信账号注销后绑定的手机号怎么办 微信账号不想用了注销不了怎么办 苹果手机掉了捡到不还怎么办 在工作中把和别人结下梁子了怎么办 在阿里巴巴上买的货物没发货怎么办 做了下颌角一边脸反复肿怎么办 玩广东11选5输50万怎么办 玩广东11选5输了十几万怎么办 新办公楼装修好就要搬进去怎么办 oppo手机上的黄页删了怎么办 小米不小心把手机联系人删了怎么办 58同城小区名输不了怎么办 e路发注册直接有积分怎么办 大众速腾的不锈钢圈被碰花了怎么办 公司卡着生育险不给怎么办 济南图书馆借书超过期限了怎么办