详细的比较一下Java和C/C++的优劣
我现在有好多疑问啊,既然有这么优秀的语言,为什么市面上还有其他的语言?Java是不是真的比C/C++强,没有缺点啊?还有,面向对象和面向过程是什么意思啊?
希望高人能详细的说下,谢谢啦啊 展开
Java 是由 C++发展而来的,保留了 C++的大部分内容,其编程方式类似于 C++。但 Java 的句法更清晰、规模更小、更易学。Sun 公司对多种程序设计语言进行了深入研究,并摒弃了其他语言的不足之处,最终退出了 Java。正是这样,Java 从根本上解决了 C++的固有缺陷,形成了一种新的完全面向对象的语言。Java 和 C/C++的相似之处多于不同之处,有 C 基础的读者,学习 Java 会更容易。相比较而言,Java 的编程环境更为简单。
刚开始的时候我们也搞不清这些概念,不过后来就慢慢清晰了,首先和大家谈谈Java和js的区别,最简单的区别就是一个是后端,一个是前端。
java是纯面向对象语言,javascrip其实和Java是完全不同的东西,他以前也不叫JavaScript,叫做etscape Navigator,据说是为了搭载Java的顺分车才改名叫js的,因为当时Java很火。
JavaScript 是一种“脚本”,它直接把代码写到 HTML中,浏览器读取它们的时候才进行编译、执行。Java,是嵌在网页中,而又有自己独立的运行窗口的小程序。而且JavaScript 是动态类型语言,而 Java 是静态类型语言
让我们在来看看Java和c语言的区别,首先Java是面向对象的在里面,而C是完全面向过程的。Java可以跨平台,不同的操作系统都可以通过JVM来解释Java程序,而c语言的有些指令只在某些操作系统中才能执行。
那么js和c语言的区别在哪里呢?JavaScript是嵌入式脚本语言,可以直接插入网页或者以单独文件的形式引入网页。C语言是编译型语言,编写完毕后需要调试、编译,编译后为可执行文件,可独立运行。
2. java运行在虚拟机上,号称与平台无关。也就是你开发的java程序无论是unix,linux还是windows都可以正常运行。但是实际上这是一个良好的愿望,实际跨平台时还会有各种各样的问题。c和c++都是直接编译成可执行文件,是否能跨平台主要看你用到的编译器特性是否有多平台支持。
3. 因为c和c++是直接编译成可执行文件,所以运行效率要比java高。至于c和c++哪个更快,两种语言的拥趸已经吵了很多年。
4. java因为是运行在虚拟机上,不需要考虑内存管理和垃圾回收机制。也是就你可以声明一个对象而不用考虑释放他,虚拟机帮你做这事情。而c和c++语言本身没有多少内存管理的概念,写c和c++程序如果用到指针就一定要考虑内存申请和释放。内存泄漏是c和c++最头疼的问题。
5. 代码重用:java中有一个根类object,所有的类都是其子类,通过这种方式将容器和算法分离,实现一种操作作用于多种对象,提高代码重用。c++中没有总根对象,但是c++提供了另一个更强大的功能“模板”,同样高效地实现了一种操作作用于多种对象,提供了高效的代码重用方法。
6. 数据结构:java内建了丰富的数据结构:列表,集合等等(很久没用java了,有些记不太清)。而c++则用“模板”同样提供了各种数据结构(容器)。
7. c语言在一些比较低层,和硬件打交道的地方用得比较多。另外很多开源软件由于unix/linux开发习惯也大多采用c来开发。Java是现在最流行的开发语言,c++比起java稍稍不那么流行一些,但是功能很强大。如能深入掌握,可以写出兼顾效率和美观的优秀代码。
下边说一下区别吧:
1,最大的区别:比较明显的是C++能被操作系统(Window,Linux)直接运行,而Java不行,需要有个JVM.也就是说,java编译好的文件需要通过jvm来让操作系统运行。jvm可以安装到任何系统。
2:JAVA的应用在高层,C++在中间件和底层……
JAVA离不开业务逻辑,而C++可以离开业务为JAVA们服务……
JAVA的一堆框架,一堆中间件,我们都只能跟在后头,除非你是greate master!而C++可以创造出属于自己的东西,尽管不是那种greate master.
3:还有一点就是效率问题:JAVA更注重于面向对象的思想(为了完全面向对象,可以适当的牺牲效率),面向对象使复杂的事情简单化
而C++更注重于效率(为了更好的效率,可以适当的牺牲面向对象) ,所以C++更复杂一些。
希望这些对你有用。
简单的理解,C和C++比较具有创造性,Java具有较强,较方便的移植性
C在内存分配上比较让人头疼,也就是说他没有自动释放内存的功能,这刚好是Java的优点
Java语言,你不必担心内存被没用的东西占用,它会自己释放
C和C++比较相似,但是现在主流Java和.net,听起来是不是很简单,鄙视复制!!
面向对象就是说虚拟的模拟现实中的东西,万物皆对象这个是面向对象的特点
封装,多态,枚举,重载等都是面向对象的一些特点
不要想的太难,我从事Java快5年了,你想简单点!有问题留言
希望对你有帮助
建议你看看
《java程序员,上班那些事儿》
里面有详细的,java与c++的实验性比较,
而不是根据什么书什么书在那里说
java在运行速度上是和c++不相上下的!
之所以感觉java比c++慢,是因为java实际的对象占得内存要比你印象中的对象耗得内存多很多!
上面是代码效率上的比较
但是,如果是开发效率上,哪一方面c++都是无法跟java比拟的!
这个是开发效率上的比较
如果你要程序的性能的极限,那么选c++一定比java 好,但是你要开发效率,那么肯定是java好!