C++/C与Java的区别

C++/C与Java的区别Java是由C++发展而来的,保留了C++的大部分内容,其编程方式类似于C++。但Java的句法更清晰、规模更小、更易学。Sun公司曾对多种程序设计语言进行分析研究,取其精华去其糟粕,最终推出了Java。Java从根本上解决了C++的固有缺陷,形成了新一代面向对象的程序设计语言(当然了解决问题也是需要代价的)。一、跨平台(C\C++和Java)Java是基于JVM虚拟机的跨…

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

Java 是由 C++发展而来的,保留了 C++的大部分内容,其编程方式类似于 C++。但 Java 的句法更清晰、规模更小、更易学。Sun 公司曾对多种程序设计语言进行分析研究,最终推出了 Java。Java从根本上解决了C++的固有缺陷,形成了新一代面向对象的程序设计语言(当然了解决问题也是需要代价的,总结起来就是不能自由访问内存,速度变慢)。

一、跨平台(C\C++和Java)

Java是基于JVM虚拟机的跨平台语言,一次编写,到处运行。

C/C++ 编译成本地机器码, 可以由操作系统直接运行,运行效率较高。

Java 编译成字节码,需由Java虚拟机读取运行, 所以效率偏低,但可通过JIT提高运行效率。

二、指针(C\C++和Java)

Java (Python和Js)没有指针的概念。在 C/C++中,指针操作内存时,经常会出现错误。而在Java中是没有指针这一概念的,因此也有效地防止了一系列由指针引起的操作层失误(如指针悬空所造成的系统崩溃),更有利于 Java 程序的安全。但是指针提供了不需通过变量就能对内存直接进行操作的能力,所以Java不能编写一些接近硬件的、底层的应用程序,如设备驱动程序,病毒等等。

三、多重继承(C++与Java)

Java不支持多重继承。多重继承,一个类允许继承多个父类。尽管多重继承功能很强,但使用复杂,所以 Java 不支持多重继承,但允许一个类实现多个接口。可见,Java 既保留了 C++多重继承的功能,又避免了 C++的许多缺陷。

四、数据类型(C\C++和Java)

Java 是完全面向对象的语言,所有方法和数据都必须是的一部分。除了基本数据类型之外,其余类型的数据都作为对象型数据。例如,对象型数据包括字符串和数组。类将数据和方法结合起来,把它们封装在其中,这样每个对象都可实现具有自己特点的行为。而 C++将函数和变量定义为全局的,然后再来调用这些函数和变量,从而增加了程序的负担。此外,Java 还取消了 C/C++中的结构和联合,使编译程序更加简洁。

五、自动内存管理(C\C++和Java)

Java 自动进行无用内存回收操作,不再需要程序员进行手动删除。Java 程序中所有的对象都是用 new 操作符建立在堆栈上的,这个操作符类似于 C++的“new”操作符。java因为是运行在虚拟机上,不需要考虑内存管理垃圾回收机制。也是就你可以声明一个对象而不用考虑释放他,虚拟机帮你做这事情。而c和C++语言本身没有多少内存管理的概念,写c和c++程序如果用到指针就一定要考虑内存申请和释放,内存泄漏是c和c++最头疼的问题。但是,Java需要筛选无用对象释放,也就降低了运行效率。

六、操作符重载(C\C++和Java)

Java 不支持操作符重载(c也不支持),操作符重载被认为是 C++的突出特征。操作符重载,就是把操作符(比如’+,-,*,/’这些运算符)赋于新的意义, 来完成更为细致具体的运算等功能。要实现操作符重载,就要使用操作符重载函数,而运用函数就肯定会存在各种限制条件以及特殊情况。特殊情况就需特殊处理,因此操作符重载还是比较繁琐的。但是为了避免舍本逐末的情况,Java语言还是可以通过类来实现操作符重载所具有的功能的。

七、字符串(C\C++和Java)

C 和 C++不支持字符串变量,在 C 和 C++程序中使用“Null”终止符代表字符串的结束。在 Java 中字符串是用类对象(String 和 StringBuffer)来实现的,在整个系统中建立字符串和访问字符串元素的方法是一致的。Java 字符串类是作为 Java 语言的一部分定义的,而不是作为外加的延伸部分。此外,Java 还可以对字符串用“+”进行连接操作

八、goto 语句(C\C++和Java)

可怕”的 goto 语句是 C 和 C++的“遗物”,它是该语言技术上的合法部分。goto语句也称为无条件转移语句,通常与条件语句配合使用,用来实现条件转移, 构成循环,跳出循环体等功能。但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程序流程的混乱,使程序的可读性变差,增加程序调试的难度。 Java 不提供 goto 语句,虽然Java指定 goto 作为关键字,但不支持它的使用,这使程序更简洁易读

九、类型转换

在 C 和 C++中,有时会出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在 C++中可将一个浮点值赋予整型变量,并去掉其尾数。当然并不鼓励这样做,因为并不总是能获得理想的结果,采用强制类型转换比较好Java 不支持 C++中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。

十、缺省参数函数

Java 和C不支持缺省参数函数,而 C++支持

Java 没有函数。作为一个比 C++更纯的面向对象的语言,Java 强迫开发人员把所有例行程序包括在类中。事实上,用方法实现例行程序可激励开发人员更好地组织编码。

十一、预处理功能

C/C++在编译过程中都有一个预编译阶段,即预处理器。预处理器为开发人员提供了方便,但增加了编译的复杂性。Java 允许预处理,但不支持预处理器功能,因为 Java 没有预处理器,所以为了实现预处理,它提供了引入语句(import),但它与 C++预处理器的功能类似。

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

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

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

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

(0)


相关推荐

  • Python递归算法解决斐波那契数列

    Python递归算法解决斐波那契数列**Python递归算法解决斐波那契数列**斐波那契数列指的是这样一个数列1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…这个数列从第3项开始,每一项都等于前两项之和。递归算法定义:就是一个函数直接或间接调用自身的一种方法,他…

  • Tomcat调优JVM参数

    Tomcat调优JVM参数

  • Unity+OpenCV 人脸识别追踪

    Unity+OpenCV 人脸识别追踪项目需要一个人脸识别追踪的效果,所以查找了一些资料,自己做了一个功能,基本效果已经实现了。首先项目需要OpenCV的开发环境,所以首先一定要在开发电脑上装上OpenCV的开发环境,流程很简单,直接去http://opencv.org/downloads.html官网下载OpenCV的安装文件就可以了,然后配置电脑的环境变量。我的电脑是windows操作系统配置好就是这个样子,然后要把用到的

  • 简单贪吃蛇C++语言编程(如何用c语言写贪吃蛇)

    C语言实现,编译环境VS2017附:easyx图形化(文章末尾)效果图如下(有一些函数kbhit,getch,在这表示为_kbhit与_getch)//不同编译器原因注意在Dev等集成开发软件下可能会CEo(* ̄▽ ̄*)o一、引言作为一个小白,相信大家的心情都是一样的,渴望写一个人生的第一个“贪吃蛇”。…

  • 黑群晖教程:(二)黑群晖安装DSM6.1x(图文)[通俗易懂]

    黑群晖教程:(二)黑群晖安装DSM6.1x(图文)[通俗易懂]接上篇黑群晖搭建指南—(一)硬件选择如果你没有使用上篇博客的硬件可不可以呢?当然是可以的,任何一台64位的旧电脑都可以作为黑群晖的载体。只需要注意DSM6.x的引导需要支持UEFI引导的主板,如果主板仅支持Legacy请安装DSM5.x(这篇教程不适合DSM5.x)。另外,博客中所说的NAS、黑群晖、群晖都指的是你要做黑群晖的旧设备。准备U盘一个,容量512M足矣,USB2.0也可…

  • 微信H5分享到朋友圈,转发朋友功能随记[通俗易懂]

    微信H5分享到朋友圈,转发朋友功能随记[通俗易懂]最近刚做了一个微信公众号H5项目,里面包含一个分享到朋友圈和分享给好友的功能。配置白名单以及公众号js安全域名这些就不赘述了,接下来简单介绍下实现这个功能的几个前端步骤因为是微信网页开发,项目里如果有用到一些分享,音频,视频的功能就必须接入它的SDK工具包,详情可以到官方文档里看一下第一步绑定域名先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。备注:登录后可在“开发者中心”查看对应的接口权限。第二步引入JS文件在需要调用JS接口的页面引入如下JS文件,(支持ht

发表回复

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

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