Java和C语言的区别在哪里?

标题Java和C语言的区别

Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本已经更名以取消其中的数字"2":J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。
C 语言是一种通用的、面向过程式的计算机程序设计语言。1972 年,为了移植与开发 UNIX 操作系统,丹尼斯·里奇在贝尔电话实验室设计开发了 C 语言。C 语言是一种广泛使用的计算机语言,它与 Java 编程语言一样普及,二者在现代软件程序员之间都得到广泛使用。当前最新的C语言标准为 C11 ,在它之前的C语言标准为 C99。

一、概览

1. 从编程思想来看
C语言 为面向过程语言
Java 为面向对象语言

2. 从对地址的可操作性上来看

C语言可以直接对硬件操作
Java 不能直接对硬件操作
小结:在硬件安全性上考虑,Java更安全,不容易引发硬件崩溃

3. 从效率上来看

C语言效率非常高,在所有编程语言中名列前茅
Java 执行效率一般,计算效率还不错,总体上来讲效率马马虎虎

4. 从可移植性上来看

C语言硬件依赖极高,一旦硬件环境改变,程序运行不能的可能性很高
java 硬件依赖几乎为零,只要机器装有相匹配的虚拟机,任何机器上编写的代码都可以通用

二、语言区别

1. 语言背景:

C语言是在单机时代应用非常广泛,它融合了高级语言的简单易用和汇编语言的执行效率。
Java是在研究电子消费产品开发平台和互联网应用的基础上实现的,它的许多语言特性也是从c语言那里沿用和发展,并且使面向对象更加自然和完善(如安全性和代码的移动性)。

2. 语言跨平台:

C语言不可以跨平台。
Java可以跨平台,在windows 和 unix 等系统上都可以很好的运行。

3. 指针管理:

c语言中指针最大的优点,它可以使用户几乎可以访问计算机的所有内存资源和其他部分资源(就是指那里打那里)。同时也是c语言程序最难掌握和调试的问题,并且给系统的安全性和稳定性带来很大的困难。
java中没有指针的概念,尽管也有数组和对象的引用的概念,但它的管理全部交给系统管理,这样限制了用户的资源的访问,但是也给java系统带来安全性和稳定性。JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全

4. 封装

c语言中没有package概念,需要其他方式来实现。
java中引入了package的概念,使面向对象和面向组件开发更加方便, Java都能够实现面向对象思想(封装,继乘,多态)。JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c语言的固有缺陷。

5. 数据类型及类

c语言允许将函数和变量定义为全局的。
Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。

6. 自动内存管理

C语言没有内存管理,必须手动(添加语句)释放内存,增加了程序设计者的负担。
Java程序中所有的对象都是用new操作符建立在内存堆栈上, Java自动进行无需内存回收操作,不需要程序员进行删除。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。

7. 字符串:

C语言不支持字符串变量,在c语言程序中使用Null终止符代表字符串的结束。
Java中字符串是用类对象(strinR和stringBuffer)来实现的,这些类对象是Java语言的核心!
另:
Java没有函数,作为一个比c语言更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。

假如李白会编程,语言估计学不停;’飞流不再三千尺,也能激起千层浪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值