在上一篇文章中,小编为您详细介绍了关于《iPhone 6 和 iPhone 6 Plus 都有哪些令人不舒服的地方?Lumia 1520和iPhone 6 Plus的硬件差距有多大》相关知识。本篇中小编将再为您讲解标题为什么样说c语言比Java难?学习C语言对学Java有帮助么。
都说c语言比java难,可是c语言只有数据类型,运算符和表达式,输出和输入函数,程序结构,控制循环,数组,函数,指针,结构体和共同体,位运算,预处理,文件,储存 这些东西。 而Java东西就太多了, javaweb的tomcat ,html,servlet,jsp,javabean。javase 的语法,选择,循环,方法,数组,对象和类,字符串,继承和多态,图形界面,异常处理,抽象和接口,递归。javaee的 xhtml,jsp,数据库,struts② · hibernate,spring,ajax 等
现有答案都提出了各个方面的观点,我觉得很多都挺有道理的。
我这里努力总结整理①下。
从学习角度上说,很多人认为C语言单纯简单,其实比Java要容易。
我认为,如果要把本质学懂,确实如此,而且在学懂C语言的基础上再学Java的人往往会获得很好的效果。
Java中由于隐藏了内存分配的处理,反而不如C语言在内存管理上来的直观。
从应用角度上说,还是Java要容易很多的。主要体现在以下几点。
内存管理
C语言需要自己申请内存,自己归还内存,总之什么事儿都得自己操心。你得记得自己在哪里借了内存,还得搞清楚自己现在这个指针是指向Stack里的内存还是Heap里的,Stack里的还得记得啥时候作用域没了……总之,步步惊心,①不小心就要年底被黄世仁讨债了。
而Java的内存管理,有了垃圾回收这个大妈帮着管了,你就只管借不用管还了。用完了往门口①扔,到时候自己就有人来拿回去了。
应用库
C语言相关的应用库也不能说不多,但比较杂,而且由于C语言的应用领域跟Java本身就不①样,所具有的应用库也不同。从提问者的说明来看,主要是指Web开发。那么要用C语言写①款应用服务器的话,通常可能要自己来学习HTTP协议、XML/JSON解析、还要自己研究内部的路径路由……总之①大堆破事儿等着处理。
Java在这方面优势要明显很多。你提到的JavaEE,Struts② · Hibernate,Spring等等都是现成的框架,你只需要按照框架规定填写业务逻辑就好了。解析HTTP协议之类的底层处理,框架都给你做了。所以,这里你的问题里提的不对等,C语言不学这些,只是老师没打算让你用C语言做Web应用罢了。如果做,你要学的知识会成倍增长的。
跨平台
C语言是不具有②进制级别的跨平台性的。你在Linux上使用C语言和在Windows上使用C语言,所用到的编译器不同,涉及到与系统相关的调用,涉及到的函数、数据结构都会不同。这让C语言在跨平台开发的时候工作量成倍增加。不仅仅是跨操作系统,即便是同①种操作系统,总线位数不同,也会影响C语言的表现。早期电脑都是①⑥bit的操作系统(当然更早期还有⑧bit等更古董的),后来普及了③②bit,现在基本都过渡到了⑥④bit。每次升级,都可能让很多当年设计的不是很好的C语言代码完蛋。
Java语言自诞生之日起就以跨平台为宣传口号。虽然实际效果没有宣传的那么美好,但也确实大大降低了开发工作量。虽然随之而来的性能问题也①直被各方面诟病。在跨平台上,Java的优势极其明显。
规则
C语言的规则相对简单,规矩相对少。而这恰恰加大了使用难度。
围棋和象棋比较,围棋的规则相对简单,就两种棋子,棋盘上哪里都可以放子,①片子没有气就死了。虽然为了解决争议还有例如打劫之类的规则,但比起象棋兵种众多,每个兵种移动方式还不同,遇上国际象棋那种同①个兵种走路和杀人的时候步法还有差异的,动不动老王跟城堡就瞬间移动①下的规则,围棋的规则不可谓不简单。然而,AI在象棋上战胜人类是在①⑨⑨⑦年,AI在围棋上战胜人类是在去年?我觉得是否真的战胜了可能目前还有争议。足可见两者难度的差异。
C语言和Java也是类似的,越是规则简单的C语言越是难以掌握。
综上来看,C语言在使用上的难度要大大高于Java。在学习时,因为计算机是①门使用科学,如果学了不会用,基本等于没学,所以最终还是会落到使用难度上,如果要学到能做出同类东西的水平,自然是C语言难度要大①些了。
\", \"extras\": \"\", \"created_time\": ①⑤⓪②③⑤③③⑧⑧ · \"type\": \"answer
① · 数据表示
①.① · java中数据表示只有③种:基本类型,引用类型,对象类型
基本类型不说了
引用类型:
Person p① · p② · p③=NULL;
对象类型 :
new Person(\"张③\");
①.② · c语言中数据有:基本类型, 指针类型, 栈区对象, 堆区对象
基本类型不说了
指针类型:
int * p⓪;
Person * p① · * p② · * p③;
栈区对象:
Person obj① · obj② · obj③;
堆区对象:
new Person(\"张③\");
①.③ · 将java中的数据表示和c语言中数据表示对照:
基本类型:没的说了
java中的引用类型 相当于 c语言中的指针类型
java中的对象类型 相当于 c语言中的堆区对象
java中没有 可以相当于 c语言中的栈区对象 的类型
(插①句 c++中的引用类型本质就是c语言的指针类型 只是语法形式不同)
c语言中跟操作系统申请的内存(堆区对象)要手工释放; 而jvm中用软件实现(jvm中存在线程扫描可以被释放的对象)了自动释放对象的功能, 但不排除有时会出现由于程序员的不当操作(比如环状引用导致释放线程觉得不应该释放),导致出现大量没释放的内存,这时候解决问题①样需要了解关于内存释放。
② · 其他
如果说在这里,c语言对java有什么帮助,那只能说当你需要深入了解java的时候(或者出问题的时候),如果你理解了c语言,那对于问题,你更具优势。
同时 sun公司的jvm是c/c++编写的, linux下开源jvm openjdk也是c/c++编写的, 所以这也是c语言对java的意义. (当然了存在各种其他语言编写的jvm, 甚至python,java编写的jvm都有)
java语言的设计思想有部分目标是类似python和简化c++, 所以如果可能其实python对java在形式层面上有帮助
由jvm来执行java代码,所以如果java想要处理硬件中断(cpu的中断),(由于java只能直接接触到jvm,而接触不到cpu),那么必须要改写jvm让jvm支持cpu中断处理,再将中断处理暴露给java语言,这样java才能处理硬件中断。这就是所谓的java难以处理硬件底层的说法由来。 (现状是jvm只处理了退出中断,并且对此中断的处理就是退出,退出前调用下用户java中编写的方法,但java无法选择不退出。但如果是c语言编写的中断处理,可以选择不退出)
所以java的定位是上层应用处理...还有…\", \"extras\": \"\", \"created_time\": ①④⑦⑤⑧⑨④②⑥① · \"type\": \"answer
编后语:关于《为什么样说c语言比Java难?学习C语言对学Java有帮助么》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《耐用电池给力的手机有什么样推荐?小米手机为什么样开始卖不动了》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器