大家好,今天小编关注到一个比较有意思的话题,就是关于java语言和c 语言的问题,于是小编就整理了5个相关介绍Java语言和c 语言的解答,让我们一起看看吧。
c语言和JAVA语言哪个更好?
看开发什么东西了!他们针对方面是不同的;还有看老板的需求;c语言更快,更底层;通常开发硬件相关的驱动;j***a,更适合开发桌面型软件;如果没有要求,J***A学着更有成就感,2个月就能开发一个自己的QQ等一些玩具了!而C语言,也许2年都做不到,因为一切轮子都要重新写;反过来类似底层的东西;j***a可能一辈子也做不到,因为他本来就不干这个活;
J***A程序员和C程序员的差别是什么?
谢谢邀请!
J***a语言与C语言都是目前IT领域被最广泛使用的编程语言,各自都有完整的语言生态,在整个IT科技领域有大量的应用场景,从业人员也非常多。在最新的TIOBE语言排行榜上,J***a和C语言分列第一和第二位。
第一:应用场景不同。J***a语言的应用场景以web开发、Android开发、大数据开发、后端服务开发为主,而C语言则以容器开发、操作系统开发、开发为主,也就是说J***a语言与C语言的应用场景有比较显著的区别。
第二:思维方式不同。J***a是面向对象编程语言,而C语言则是面向过程的编程语言。面向对象的编程语言主要解决的问题是抽象问题,简单的说就是J***a程序员主要在做“抽象”,不同程序员需要解决不同层次的抽象问题。C语言程序员往往解决的是流程问题,简单的说C语言程序员就是在做“流程”。
第三:任务规模不同。J***a作为面向对象语言,在解决问题的规模上要明显大于C语言,这是J***a与C语言一个比较显著的区别。J***a语言往往要完成大型的电子商务系统、ERP系统等,而C语言解决问题的规模相对来说要小一些。
第四:关注点不同。J***a相对来说更关注于业务的实现过程,而C更关注于业务的执行效率。J***a语言中的不少“容器”都是***用C语言开发的,因为容器更注重执行的效率,从这个角度来看,J***a语言与C语言的合作关系也是比较紧密的。不少开发团队中,C语言程序员在做容器开发,而J***a程序员往往在做开发。
未来,J***a语言和C语言的发展空间都是比较大的。
作者简介:中国科学院大学计算机专业研究生导师,从事IT行业多年,研究方向包括动态软件体系结构、大数据、人工智能相关领域,有多年的一线研发经验。
欢迎关注作者,欢迎咨询计算机相关问题。
很多零基础的小白只是因为IT行业薪资高,所以才想学一门IT技术,但是由于对IT行业并不了解,所以不知道自己该学什么技术。今天小编着重给大家讲讲J***a与C语言的区别,然后大家可以根据自己的需求选择学哪个。
首先从概念上说,J***a是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性。c语言是一门面向过程、抽象化的通用程序设计语言。J***a的面向对象的特性使得用它编程比用C语言要简单很多。而且J***a脱胎于C语言,不仅吸收了c++语言的各种优点,还摒弃了C++里难以理解的多继承、[_a***_]等概念,所以J***a相对C语言来说更简单易用。
其次从适合人群上来说,名企在招聘J***a技术人才时一般会要求大专以上学历,所以想找J***a类工作,学历是个槛;而C语言行业对于学历并不那么看重,C语言开发工程师学历要求中大专学历占比较高。
第三从就业机会上来说,J***a由于具有跨平台性、安全性、健壮性等特性,广泛应用于企业级应用开发、网页开发、游戏开发等领域,就业面相对较广,而C语言退守到系统级别语言,成为软件工业的基础,地位稳定,广泛应用于底层开发,嵌入式、VR/AR、网络安全等领域都需要用到C语言。
最后从薪资待遇来看,从职友集数据可知,J***a开发类人才的平均薪资在一万以上,C语言工程师的平均薪资在8千到一万之间。J***a开发类的工资较高些。
以上就是J***a和C语言的一些区别,大家可以根据自己的情况选择适合自己的编程语言来学习。
有人说c语言开发效率比j***a低是哪些因素导致的?
我认为主要有以下几个原因:
1.C语言直接操作内存,没有内存回收机制。而j***a有成熟的内存回收机制。
2.C语言面向过程编程,而J***a面向对象,在开发大型项目上,面向对象有优势。
3.C语言相关类库、成熟框架不如J***a丰富。
其实,你想使用c语言也可以面向对象开发
只不过比较麻烦,而已。
比如J***a什么特性,甚至于面向对象的特性,需要程序员自己实现。
对于普通程序猿没有必要,当然对于大神级都一样。
大神级可以写出类,接口,继承
主要的总结起来有以下几点:
1, 语言特性不一样 比如内存管理不一样 c要求自己来管理内存,当程序变的复杂后,内存管理是一件非常复杂易错的事情,只有用过的人才能真的体会,除了正常业务逻辑之外,你会在各种指针,指针的指针上,分配内存回收内存上花费几乎与业务代码同样的时间。在j***a或者.net里有自动垃圾回收,内存的自动管理机制,不容易写出内存泄露的代码,在这点上两者就像雕刻刀和瓦匠的刀,一起修房子还是瓦刀更合适更快。在小而美的程序上,c往往能做得更好。现在的人工比机器贵,就算性能上不够好,企业也可以选择堆机器。
2,面向对象的支持 面向对象的作为一种设计思想,c语言支持得不够好,就算c++作为一款面向对象的的语言,同样因为要兼容c,而使得语言特性变得很复杂难懂,相比之下,j***a没有这样的历史包袱,得以轻装上阵。这是真正从计算机易懂到人易懂的飞跃。
3,生态 经过长期发展,自己本身适用的场景影响下,j***a在web框架,大数据,ai等等各种常用的框架上都有更完善的可以用,c在嵌入式,操作系统层面有不可替代的优势。
4, 人员技术储备 往往j***a更容易招人,而且程序更易懂,技术人员更好替换。
综合考虑,j***a要比c更容易做企业开发,开发效率上也要快很多。
从代码的执行速度上来来看,应该是C语言更胜一筹。
但是在实际开发中,有时候面对同一个问题,使用J***a开发的话会比使用C语言的效率高。
我们从概念上来看,C语言是一门面向过程的高级程序设计语言;J***a的话是一门面向过程的编程语言,其是由C语言衍生而来,不断吸收了C/C++的一些优点,抛弃了一些缺点。
所以要解释为什么有时候我们说“C语言的效率没有J***a语言效率高”这就要来说说J***a对比C语言有哪些优势了。
虽然在性能上,面向对象的J***a比不上面向过程的C。但是构建一些复杂的业务逻辑上,J***a 得益于面向对象的设计,能够取得更大的优势。
在J***a语言设计的时候,就是参考了C语言。但是在其技术体系的设计上,J***a更加注重安全性、可扩展性及可移植性。
因此在技术体系上,J***a更加适合当下的互联网环境,因此我们在开发一些互联网应用、大数据技术等J***a具有很强的优势。
写过C/C++的都知道,最头疼的就是内存管理问题。但是在J***a中,引进了垃圾回收机制。使得我们在编写J***a程序的时候,可以不用再去关心内存管理。JVM可以为我们自动管理,可以有效的防止内存泄露,更加高效的利用内存。
在J***a里,能操作数据类型的都是设计好的数据结构,array有长度,String不可变,每一个都是安全的,在内存和程序员之间,隔着JVM,像是包住了边边角角的房间,随便小孩折腾,不会受伤。
其实我们平时所说的J***a开发效率比C要高也是有些片面的。各种语言都有各自的优势,用在不同的地方,开发效率自然也不同。
看开发什么呢,各自擅长领域不一样;C语言偏向底层算法开发,如果做应用层面,代码量很大;J***a偏向企业级应用开发,有成熟的库,开发应用擅长。
基本上所有编程语言,都是基于c语言开发的虚拟机运行。没有了c语言大部分语言就是空中楼阁,可看不可用。
J***a和C++的区别是什么?
一般来说,C ++是一个开放标准,旨在实现速度和性能和关键性的高性能系统,有很多令人印象深刻的项目使用Lander,Adobe Acrobat Reader等语言设计。 C ++使开发人员能够使用非常高级的抽象进行编程 - 例如,使用泛型,并且在需要时,深入到机器的裸机 - 例如处理中断。
J***a的设计考虑了其他目的,当Sun计划使用Oak(后来称为J***a)时,它专注于Web应用程序,因此它支持该语言,并提供了大量易于使用的重型接口库。 和可移植性(编译一次,在任何地方运行)使用JVM,这可以防止程序员编码到特定的机器,而是编码到沙箱,沙盒反过来运行托管机器上的代码,这显然对性能/速度有负面影响。
这两种语言的比较是程序员之间争论的一个热门原因,这是由于他们不同的工作需求和性质,IMO的每一种语言都为了成熟而犯了错误,例如,C ++的导出模板,以及J***a缺乏程序编程(大错)。 另外,每个人都有不同方面的利弊,因此平衡生产力/绩效问题的是正确的语言。
C++是基于C语言发展而来,起初,C语言并不支持面向对象,后来引入了面向对象的概念,即成了C++,而J***a天生就是面向对象的,有人曾说C++不是完整的面向对象,不过这都是狭义的说法,如果要比较这两种语言,J***a确实更面向对象,一切皆是对象,而接口,继承等功能完善。例如在多态问题上,C++需要用虚函数,而J***a直接实现。但从语言来看,J***a跨平台,是解释型语言,解释器会把文本解释成语法树,而不是编译。J***a运行于J***a虚拟机之上,不对内存进行直接操作,虚拟机有垃圾回收机制,是内存安全的编程语言,因此不如C++灵活,也没有其运行效率高。而C++是编译型语言,编译器将代码编译成机器码,因此有人说C/C++是最接近机器语言的高级语言,也有人把C称作中级语言,但由于操作系统底层接口和实现机制不同,因此对系统调用的代码会有不同,因此C/C++无法跨平台运行,一般用于追求高效的,底层的开发,例如单片机。C++是内存不安全的,因此需要程序员时刻警惕内存泄漏,数据破坏等问题。从开发角度来看,C/C++语法简练,灵活,因此开发效率比J***a高,但学习难度大,J***a代码累赘,开发效率低,但其框架较多,可重用类库较多,又有J2EE等支持,因此广泛用于web和互联网开发。
题主这个问题问的挺好,目前C++和J***a是比较主流的两门面向对象语言,但是每个人对于两种语言的比较都有不同的看法,有一点我们大家都认同的看法就是“C++是编译型的高级语言而J***a是解释性的高级语言”,因此C++拥有更快的编辑和执行速度,而J***a也拥有着兼容性良好的优势,C++针对底层开发更加的完美而J***a在网络编程方向更胜一筹。归根结底一句话就是两门语言各有所长,并且将会非常友好的共存下去。所以一个优秀的程序员在精通两者其中一门语言的同事,对另一门语言至少也需要掌握基本语法和结构。由于J***a属于C++的衍生语言,所以两者不管是语法还是概念都有着极其相似的地方,我们就来谈谈他们在面向对象方向的区别吧。
1.J***a是一门完全的、纯粹的面向对象语言。
我们可以知道面向对象技术中的“对象”,指的是某个具体的实例在代码逻辑中的表现,而类就是相同的对象的集合。所有的J***a程序都是由类组成的。所以在我们学习工作过程中都必须好好的记住这一点,因为这意味着J***a就是一种完全的面向对象语言。J***a中的所有东西都必须放到一个类里面去。不存在全局函数、全局数据,也没有像结构、枚举或者联合这种东西,一切只有“类”!
我们再看看C++,C++和J***a完全不同比方说C++的main方法不属于任何一个类,并且也可以在类之外再定义另外的函数。在C++中,全局变量、结构、枚举、联合等一些列源于C的概念仍然存在。不同的人对于这个问题的区别都有不同的看法,C++有一个优点是灵活且机动性强,并且在C中成立的概念在C++中基本没有任何问题,对于C程序员来说他们只需要了解C++相较于C多了哪些东西就行了,但是也正因为这一点,C++没有完全并入面向对象的行列,他更像是一个面向对象和面向过程的杂合体,因此产生多的很多机制在强化某部分功能的同时破坏了程序的整体结构。
因此对两种语言的总体比较可以得出的结论是:C++更加灵活,而J***a更加严谨。
安卓为什么用J***a语言不用C语言?
谢谢邀请
首先安卓是可以使用C语言写代码的
题主应该是接触安卓比较少,其实安卓本身底层是一个linux的系统,既然是Linux系统,那么必然可以使用Linux上面的特性了;不知道有没有网友用过第一代安卓手机,我的第一个安卓手机是中兴N760,很古老的手机了,12年的时候,在学校里面的营业厅,充700元话费,送一台手机,当时的这个手机,上面有一个terminal,你没听错,这个手机真的搭载了一个terminal,在这个terminal里面,你可以属于Linux常用的命令。就是下面这个货。
既然安卓系统的底层是一个Linux系统,如何才能用C/C++编程放到上面跑呢?安卓的编译器里面,有一个叫做NDK的东西,此神器就是解决如何用c/c++开发的问题,有兴趣的可以了解一下。
顺便说一下,一般来说对于CPU密集型的程序,追求效率,都基本上会选择用C/C++开发,然后ndk编译,比如输入法,需要再本地做音字转换,效率要求极高,所以用c语言研发引擎部分。
我做移动互联开发多年,也做过不少大大小小的Android项目,所以我来回答一下这个问题。
众所周知,Google选择了J***a语言作为Android平台的开发语言,而且并没有使用Oracle公司的JVM,而是自己写了独立的编译器(DVM)。而且DVM与JVM的区别还是比较明显的,JVM是基于栈的,而DVM是基于寄存器的,所以从速度上来说,DVM理论上要更快一些。另外,JVM执行的是class文件,而DVM执行的是dex文件,这就说明JVM与DVM在执行的[_a1***_]码方面也是不同的。
从这些区别上来看,Google对J***a的改造还是比较大的,只是在语法上保留了J***a语言的规则。在我看来,Google为安卓平台选择J***a语言有以下几个方面的原因:
第一,J***a语言有较为广泛的程序员基础。由于目前J***a语言的应用领域十分广泛,所以使用J***a语言能迅速建立庞大的开发群体。
第二,J***a语言的生态比较健全。Android平台的功能越来越强大,这就需要有一个能与之匹配的编程语言,而编程语言自身的生态就显得比较重要的,而J***a语言的生态环境是比较健全的。
目前我们在实际的开发过程中发现,用J***a语言的Android平台在某些性能指标上,明显要优于iOS平台。比如大列表的装载问题,Android平台是没有问题的,但是同样的操作在iOS系统下就会出现崩溃的问题。
我的研究方向是大数据和人工智能,目前也在带大数据方向的研究生,我会陆续在头条上写一些关于大数据方面的文章,感兴趣的朋友可以关注我的头条号,相信一定会有所收获。
如果有软件开发方面的问题,或者是考研方面的问题,也可以咨询我。
谢谢!
内核是linux,就是c啊,为什么要搞虚拟机为什么要搞系统,就好比搞基础建设啊,修高速,建铁路,架电网,通网络,为什么?有了这些基础才能跑汽车,才能网购啊,搞开发一样,j***a好比汽车,c好比牛车,有高速肯定汽车好,泥洼路肯定牛车好啊
到此,以上就是小编对于j***a语言和c 语言的问题就介绍到这了,希望介绍关于j***a语言和c 语言的5点解答对大家有用。