c和java的区别_java与c的区别

c和java的区别_java与c的区别Java和C都是指令式语言(ImperativeLanguage),不同的是Java有面向对象(OO)成分在里面,而C是完全面向过程的,C的高级版本C++、C#支持面向对象。另外一个不同是,Java跨平台,既不同的操作系统都可以通过JVM来解释Java程序,而C、C++、C#则是与平台相关的,有些指令只在某些操作系统中才能执行。(推荐学习:java课程)具体原因是,Java是解释型语…

大家好,又见面了,我是你们的朋友全栈君。

Java和C都是指令式语言(Imperative Language),不同的是Java有面向对象(OO)成分在里面,而C是完全面向过程的,C的高级版本C++、C#支持面向对象。

384745ac5bbefe121078645caaaf4080.png

另外一个不同是,Java跨平台,既不同的操作系统都可以通过JVM来解释Java程序,而C、C++、C#则是与平台相关的,有些指令只在某些操作系统中才能执行。 (推荐学习:java课程)

具体原因是,Java是解释型语言,所有代码都会翻译成统一的、与系统无关的bytecode,然后放到JVM上运行;而C是编译式语言,代码要先通过编译器转换成与系统相关的中间代码,然后才能运行。

再一个不同是,Java不支持系统调用,既无法与操作系统进行交互,这是由它跨平台的特点决定的,而C则可以调用系统中的指令,如fork()。这也就是为什么Java中只有线程(Thread)概念而没有进程(Process)概念,而C两者均有。

再者,Java无法对内存进行控制,而C则可以通过指针对内存进行人为分配。

还有一点,Java有Gabbage Collection机制,可以自动回收不再使用的空间,而C则要用free()函数释放空间。

在速度上,C语言编写的程序要优于Java,因为Java必须运行在虚拟机的环境中,但是因为虚拟机,Java获得的平台无关性,而C语言的程序有可能需要重新修改编译才能实现平台的移植。

另一方面,C语言比Java语言更“底层”,因此可以用C编写例如硬件的驱动,而Java却不行。Java和C语言还有个明显的不同就是C语言注重的是算法,但是Java却不一样,想用的时候导包就可以了。

C语言的算法很重要,但是Java中的算法没有C语言那么复杂。打印的方法:C语言是printf(“…….”);而Java是System.out.print(“…….”),也可以用println,ln表示换行。

Java程序中的基本数据类型(boolean,char,byte,short,int,long,float,double),是对对象的引用;C语言也有许多种基本类型,还有struct,union,enum,数组和指针。

在Java没有枚举、联合类型。Java采用Unicode字符集,C语言通常采用的是ASCII字符集,A—65,a—97。C语言的变量可以不进行初始化,但Java的变量要进行初始化。

在C语言中,char类型占一个字节,在Java中char类型占2个字节。

总的来说,Java比较C更容易上手,学得快,但对于了解编程语言来说帮助不如C大。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/157116.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • nbsp啥意思_UG拆分体

    nbsp啥意思_UG拆分体转载:http://blog.csdn.net/olei_oleitao/article/details/7919307 一、DM36X的BOOT过程介绍DM36x的BOOT过程和DM6446、DM6467完全是一样的,因为都是ARM926EJS架构,里边都有一个RBL,这RBL在芯片出厂的时候都烧写在ROM里,芯片上电复位后RBL在运行,然后读取BOOTMODE引脚的电平状态,决定

  • 01_很好的网站:程序师

    01_很好的网站:程序师

  • Gradle教程「建议收藏」

    Gradle教程「建议收藏」1.简介在本课程中,我们将学习Gradle,它是一个构建工具和一个依赖管理系统,与Maven和Ant非常相似,并且专门用于构建基于Java的项目。与Maven和Ant构建系统不同,Gradle不使用XML。它实际上是基于Groovy构建在DSL中的。与基于XML的其他构建系统相比,基于Groovy的Gradle脚本的最大优势是可以使构建脚本更小,更简洁。就像Maven构建文件…

  • linux json文件(tlv格式解析)

    Linux上安装jq:$wgethttp://stedolan.github.io/jq/download/linux32/jq(32-bitsystem)$wgethttp://stedolan.github.io/jq/download/linux64/jq(64-bitsystem)$chmod+x./jq$sudocpjq/usr/bin 

  • x86和x64的区别[通俗易懂]

    x86和x64的区别[通俗易懂]整理了下网上的资料,归类了下,大似表述是这样的:IBM/PC兼容机,也就是Intel的i80x86指令架构,就简称了x86。x86并不是指32位环境,而是指80×86架构,这个架构目前有32位,64位

  • 电信光纤友华PT921G,烽火HG220光猫激活成功教程关闭自带路由改桥接拨号教程「建议收藏」

    电信光纤友华PT921G,烽火HG220光猫激活成功教程关闭自带路由改桥接拨号教程「建议收藏」电信光纤友华PT921G光猫激活成功教程关闭自带路由改桥接拨号教程电信光猫质量烂就算了,最受不了它自带的路由还做了手脚,导致VPN用不了。不让看AV就算了,打个外服游戏总可以吧?不知道为啥,网上关于光猫改桥接的教程基本没有,搜出来的也说得很不清楚,是和谐了还是什么原因不得而知。本人也是自己自己试出来的,其实修改难度并不大,只不过那个界面搞的特奇葩特不友好罢了。废话不多说,步骤如下:

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号