Java和c语言的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java和c语言的区别相关的知识,希望对你有一定的参考价值。

C语言是经典的面向过程的编程语言,编程入门一般都学C语言以了解编程以及锻炼逻辑思维能力,在一些跟硬件比较紧密的编程中也经常用到。\x0d\x0a\x0d\x0aC++是在C语言的基础上加入了面向对象的概念,成为混合型面向对象语言,功能强大,但难度也大。\x0d\x0a\x0d\x0aJava是在C++的基础上进行改进的,摒弃了一些C++的不足之处,语法跟C++很像,它是运行在Java虚拟机上,所以可以跨平台,一处编译,到处执行。\x0d\x0a\x0d\x0a编程都是易学难精,哪个都好学,哪个又都不好学。都有很好的发展前景,就看是什么方向了。底层的C、桌面应用程序、游戏等等C++、嵌入式,网页,Java。 参考技术A java和c语言两者的区别如下:
1、C语言是面向过程的语言,执行效率高;Java是面向对象的语言,执行效率比C语言低;
2、C语言的安全性不如Java,C语言没有Java的垃圾回收机制,申请的空间要手动释放。Java的通用性好,可以跨平台直接移植,只要有安装Java虚拟机(JVM)就可以了。
3、在速度上,C语言编写的程序要优于Java
4、C语言注重的是算法,但是Java却不一样,想用的时候导包就可以了。C语言的算法很重要,但是Java中的算法没有C语言那么复杂。
5、Java采用Unicode字符集,C语言通常采用的是ASCII字符集,A—65,a—97。
6、C语言的变量可以不进行初始化,但Java的变量要进行初始化。
参考技术B 区别如下:
1.指针
JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。
2.多重继承
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。
3.数据类型及类
Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。
4.自动内存管理
Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c++的new操作符。下面的语句由一个建立了一个类Read的对象,然后调用该对象的work方法:

Read r=new Read(); r.work();

语句Read r=new Read();在堆栈结构上建立了一个Read的实例。Java自动进行无用内存回收操作,不需要程序员进行删除。而c十十中必须由程序贝释放内存资源,增加了程序设计者的负扔。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。
5.操作符重载
Java不支持操作符重载。操作符重载被认为是c十十的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。
6.预处理功能
Java不支持预处理功能。c/c十十在编译过程中都有一个预编泽阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加丁编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c十十预处理器的功能类似。
7. Java不支持缺省函数参数,而c十十支持
在c中,代码组织在函数中,函数可以访问程序的全局变量。c十十增加了类,提供了类算法,该算法是与类相连的函数,c十十类方法与Java类方法十分相似,然而,由于c十十仍然支持c,所以不能阻止c十十开发人员使用函数,结果函数和方法混合使用使得程序比较混乱。
Java没有函数,作为一个比c十十更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。
8 字符串
c和c十十不支持字符串变量,在c和c十十程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(strinR和stringBuffer)来实现的,这些类对象是Java语言的核心,用类对象实现字符串有以下几个优点:
(1)在整个系统中建立字符串和访问字符串元素的方法是一致的;
(2)J3阳字符串类是作为Java语言的一部分定义的,而不是作为外加的延伸部分;
(3)Java字符串执行运行时检空,可帮助排除一些运行时发生的错误;
(4)可对字符串用“十”进行连接操作。
9 goto语句
“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。
l0.类型转换
在c和c十十中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c十十中可将一浮点值赋予整型变量,并去掉其尾数。Java不支持c十十中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。
11.异常
JAVA中的异常机制用于捕获例外事件,增强系统容错能力
try//可能产生例外的代码 catch(exceptionType name) //处理
其中exceptionType表示异常类型。而C++则没有如此方便的机制。
参考技术C 首先Java是一门面向对象的编程语言,关注的是实现功能完成任务需要哪些对象来做;
C是一门面向过程的开发语言,关注的是实现功能的每个步骤和过程。
C语言和Java语言的区别还在:
1、在继承中的区别
C语言是多线继承,比如:小轿车和货车都继承了汽车类,奥迪2000是继承小轿车的,东风大卡车是继承货车,这样奥迪2000也可以继承货车,东风大卡车也可以继承小轿车。
JAVA是单继承的,比如:小轿车和货车都继承了汽车类,奥迪2000是继承小轿车的,东风大卡车是继承货车,这样奥迪2000就不能继承货车,当然东风大卡车也不能继承小轿车。
2、在动态、静态绑定中的区别
  在C语言中,为了允许运行时动态决定哪个函数被调用,一个函数必须用virtual修饰。virtual关键字被自动继承,用以支持多态;凡是没有用virtual修饰的成员函数(包括static)都是静态绑定的,即在编译时决定调用哪个版本
  而在Java中,除了static、final、private是静态绑定以外,所有方法一律按动态绑定处理
3、在初始值的区别
  在C语言中,是可以不初始化使用的
  而在JAVA中,是必须初始化值的
4、在抽象方法或抽象类的区别
C语言的对等语法是“纯虚函数”和“抽象类”
Java使用abstract关键字修饰抽象方法或抽象类,final类不能被继承
  都使用抽象类作为继承层次中的基类,提供一般概念,由子类实现其抽象方法,且抽象类都不能被直接实例化为对象
5、super关键字的区别
JAVA super关键字,指代父类对象,通常被用于调用父类的构造方法或一般方法
C语言没有super关键字
参考技术D

    C语言是底层的语言,

    java可以看作是在C上面封装起来的一种语言,就像建一座高楼一样,C语言更像砖块,沙石等这些基础的东西,而java可以看作是砖块和沙石这些东西组合起来的一面可以搬来搬去的墙。

编译型语言(C/C++)和解释性语言(Python/JAVA)的区别?


编译型语言(C/C++)和解释性语言(Python/JAVA)的区别?

这里引用一下某平台某个匿名用户的回答,很有意思。

编译型语言(C/C++)和解释性语言(Python/JAVA)的区别?


形象的解释就是这样,下面放一张图片。

编译型语言(C/C++)和解释性语言(Python/JAVA)的区别?


 编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,


因此像开发操作系统、大型应用程序、数据库系统等时都采用它,


像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,


而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、


对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,


如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。


编译型语言(C/C++)和解释性语言(Python/JAVA)的区别?


     但随着硬件的升级和设计思想的变革,编译型和解释型语言越来越笼统,


主要体现在一些新兴的高级语言上,而解释型语言的自身特点也使得编译器厂商愿意花费更多成本来优化解释器。


编译型语言(C/C++)和解释性语言(Python/JAVA)的区别?


另外如果你想更好的提升你的编程能力,


学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~


UP在主页上传了一些学习C/C++编程的视频教程,有兴趣或者正在学习的小伙伴一定要去看一看哦!会对你有帮助的~


分享(源码、项目实战视频、项目笔记,基础入门教程)


欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!


免费学习书籍:



免费学习资料:




以上是关于Java和c语言的区别的主要内容,如果未能解决你的问题,请参考以下文章

c语言static在java语言区别

c语言中的boolean 和其他语言的有啥区别?

编译型语言(C/C++)和解释性语言(Python/JAVA)的区别?

请问大家:C语言和C51有啥区别?

C++和JAVA的区别是啥?

C++和JAVA的区别是啥?