永发信息网

C和Java有什么根本的区别

答案:1  悬赏:80  手机版
解决时间 2021-11-19 23:18
C和Java有什么根本的区别
最佳答案
相同的地方:
1、语法类似:
由于Java可以算是从C++发展而来的,因此Java与C语言的语法比较类似
2、编程的熟练程度就是对语言程序库的掌握程度:
从某种程度上来说,编程语言都是由语法和相应的程序库所构成,Java有自身的类库,C语言则有标准库。所谓的编程,就是使用与语法来调用和组合程序库中的函数。
不同的地方:
1、内存管理
在Java中,基本不用考虑内存的问题,如果想用一个对象,new一个就可以,这个过程的背后则是JRE为对象分类的一定内存,当JRE发现你不再使用这个对象的时候,他就会自动回收内存,也就是说你只管借东西,不用管归还,因为与有人当你的跟班,在你不使用的时候就把东西归还了,不过这个过程还是有的,只不过是JRE作的而已。
但是C则不同,如果你想用,你可以用malloc之类的方法申请内存,当你使用完了,因为没有跟班的,你需要自己把这块内存归还回去,也就是调用free方法来完成这个任务。由于需要显式的归还内存,因此当一个函数需要将一块内存返回给调用者的时候,问题就比较复杂了,不如面向对象和具有内存回收功能的Java那么直观了。对于这个问题,在C语言中,有几种解决方案:
(1) 在调用者中先分配好内存,作为参数传入到被调用的函数中
(2) 在被调用的函数中分配,使用完后在调用者中释放
(3) 在被调用函数中使用static变量,可以将该变量返回
2、面向对象
Java的面向对象的特点很明显,而C则是一个地道的结构化语言。 Java中有一个字符串类String, 通过调用 String.length()就可以知道字符串的长度,但是在C语言中,则需要调用函数strlen(str)来得到字符串(字符数组)的长度。由于C不是面向对象的语言,也就没有this的概念,因此当使用一个与某个“东西”相关的函数时,就需要不厌其烦的将代表这个“东西”的变量作为参数传递进去。
3、名称空间
Java通过包(package)来实现名称空间,在C语言中,所有的函数都处于同一名称空间,也就是没有名称空间,因此就会很多程序提供的api接口函数都有一个前缀,例如MYSQL的mysql_init(), mysql_real_connect(), mysql_real_query()等函数名称前面的mysql_。
给你找的资料。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
美中豪汽车装具地址在哪,我要去那里办事,
用桥牌生态牌做衣柜好吗
明星之间关系紧张的都有谁,你知道吗
法国圣比德干红葡萄酒1998年多少钱?
小窦汽修汽配地址在什么地方,想过去办事,
百年柴汽配件地址好找么,我有些事要过去,
苏hww是哪里的车牌照
我想学java和嵌入式,不知道哪个更好一点,做
跪求濑美莉亚迅雷全集下载1(5)86337491
不能投身火线的人不能负责制定战略感想
我儿子被我反绑手,捆住他双手双脚因为他暑假
汇鑫车饰精品地址在什么地方,我要处理点事!
flex支持的浏览器版本有哪些
如何安装Prestashop
定制西服为什么要选量身定制
推荐资讯
皮卡车可以进宣城市区吗
天赐发艺地址在什么地方,想过去办事,
砭石艾灸仪 哪个品牌
新买的阿迪达斯nmd,发了个防伪贴,求看是不是
健康美专业护肤中心地址有知道的么?有点事想
“周思”后再加一个字组成一个好名字,用什么
四川外语学院重庆南方翻译学院教务处网址
南山高是北山高打一个动物
自行车的大链轮齿数为46齿数小齿轮为18齿,车
木耳炒肉需要放豆瓣酱和生抽吗
怎样抓住这个老男人的心
无缝管的成分
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?