java和c++的区别
发布网友
发布时间:2022-05-02 17:48
我来回答
共6个回答
热心网友
时间:2022-04-24 04:57
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语言是编译型语言,编写完毕后需要调试、编译,编译后为可执行文件,可独立运行。
热心网友
时间:2022-04-24 06:15
1.指针
JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。
2.多重继承
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。
3.数据类型及类
Java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,Java中取消了c/c++中的结构和联合,消除了不必要的麻烦。
4.自动内存管理
Java程序中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c++的new操作符。下面的语句由一个建立了一个类Read的对象,然后调用该对象的work方法:
Read r=new Read();
r.work();
语句Read r=new Read();在堆栈结构上建立了一个Read的实例。Java自动进行无用内存回收操作,不需要程序员进行删除。而c十十中必须由程序贝释放内存资源,增加了程序设计者的负扔。Java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。JAVA里无用内存回收程序是以线程方式在后台运行的,利用空闲时间工作。
5.操作符重载
Java不支持操作符重载。操作符重载被认为是c十十的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单。
6.预处理功能
Java不支持预处理功能。c/c十十在编译过程中都有一个预编泽阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加丁编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与c十十预处理器的功能类似。
7. Java不支持缺省函数参数,而c十十支持
在c中,代码组织在函数中,函数可以访问程序的全局变量。c十十增加了类,提供了类算法,该算法是与类相连的函数,c十十类方法与Java类方法十分相似,然而,由于c十十仍然支持c,所以不能阻止c十十开发人员使用函数,结果函数和方法混合使用使得程序比较混乱。
Java没有函数,作为一个比c十十更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中,事实上,用方法实现例行程序可激励开发人员更好地组织编码。
8 字符串
c和c十十不支持字符串变量,在c和c十十程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(strinR和stringBuffer)来实现的,这些类对象是Java语言的核心,用类对象实现字符串有以下几个优点:
(1)在整个系统中建立字符串和访问字符串元素的方法是一致的;
(2)J3阳字符串类是作为Java语言的一部分定义的,而不是作为外加的延伸部分;
(3)Java字符串执行运行时检空,可帮助排除一些运行时发生的错误;
(4)可对字符串用“十”进行连接操作。
9“goto语句
“可怕”的goto语句是c和c++的“遗物”,它是该语言技术上的合法部分,引用goto语句引起了程序结构的混乱,不易理解,goto语句子要用于无条件转移子程序和多结构分支技术。鉴于以广理由,Java不提供goto语句,它虽然指定goto作为关键字,但不支持它的使用,使程序简洁易读。
l0.类型转换
在c和c十十中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c十十中可将一浮点值赋予整型变量,并去掉其尾数。Java不支持c十十中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。
11.异常
JAVA中的异常机制用于捕获例外事件,增强系统容错能力
try{//可能产生例外的代码
}catch(exceptionType name){
//处理
}
其中exceptionType表示异常类型。而C++则没有如此方便的机制。
热心网友
时间:2022-04-24 07:50
java和C++都是面向对象的编程语言,但它们之间也存在着不同。在Java中,一切都是一种*(从Java.lang.Object获得一切时,命令的单根链)。在C++中,没有这样的命令根链。C++既支持过程编程,也支持面向对象的编程;通过这种方式,它被称为混合编程。
热心网友
时间:2022-04-24 09:41
C++也是面向对象的语言,但是他比较难,跨平台性,以及拓展性也不及JAVA。java好多东西都给你封装在类里了。比如说指针。还有比如说C++得程序员去专门回收内存。java就不用了,都有JVM去实现。所以说C++是面向对象语言,但不是纯的面向对象语言。
热心网友
时间:2022-04-24 11:49
感觉c++更底层一点,包括很多嵌入式的,也都是以c为基础的,以游戏开发举例,比如steam上的大型游戏也是用编程语言一点一点写出来的么?用Python能写游戏么?(我以前是运维开发Devops,其实运维这份工作本身也不是我想的,我热爱游戏就转了游戏开发,在这之中有必要去学c和java,从事自己喜欢的路至少不会让人生留遗憾,我选择生活,而不是谋生)当然游戏开发也不仅仅是编程,首先一般的游戏开发结构从底到顶为DirectX-游戏引擎-游戏,像gta5这样的次时代会更复杂,会涉及到建模,贴图,设计,交互,游戏引擎,,那么游戏引擎是由什么开发的?当然也是编程语言了,包括但不限于c,c++,java,python,先从游戏的底层架构DirectX说起,相当于所有显卡与游戏交互的一个图形程序api(wait,,,我好像难以分清图形应用程序接口api和图形用户接口GUI的区别了,感觉后者linux操作系统安装桌面描述的情况比较多),开发游戏时会调用到,而这个接口自身也是由c++写的,人家已经先写好了,后来者直接调用里面的函数就可以了,用于windows-Xbox等平台,既然底层是图形api,但是DirectX微软垄断,那跨平台ps4怎么办?微软自然不会给索尼苹果分一杯羹,答案是图形接口api并不只有微软自家pc x1独占的DirectX,还有AMD的mantle(竞争不过DirectX死了),行业领域开源通用的OpenGL(适用于Android,Apple,pc gaming,steam,ps4,xb1),Apple公司开发的专门适配于Mac和iOS平台的metal 3d(移动端ios首发独占的大作无尽之剑,还有当初更新ios8后发现狂野飙车8效果提升的非常明显),最后就是以前听说过的那模棱两可不知道是啥的vulkan(安装Intel集显驱动的时候应该很熟悉这个吧,当时都不知道这是啥,其实是新一代高性能图像处理和计算API),我们总是会把DirectX和unity混淆,可一套是底层的3D图形API,而Unity则是基于这套3d图形api之上构建的游戏引擎(引擎也分为物理运算引擎和画面引擎,前者有我们熟知的havok,euphoria,physx,后者就是各位耳尽能详虚幻3,寒霜3,雪莲花,ce3,RAGE,id tech 5,Dunia,Disrupt,AnvilNext等等),所以不要忘了游戏开发的架构组成
热心网友
时间:2022-04-24 14:14
都是面向对象的语言,但是用的地方不一样。
java 程序的总体布局是由很多类组成的,每个类都处于一个文件中。如果所有的类都位于同一个目录(文件夹)中,Java需要使用某个类(文件)的时候,就会自动 地找到它。通过使用import语句,也可以将不同目录中的类(文件)组合起来。
Java和C++中的注释在本质上是完全一样的。
Java中没有全局变量。
Java中没有枚举类型。
Java中没有typedef。
Java中没有结构或联合。
可以像在C++中那样,在Java中对方法(函数)名进行重载,但在Java中不能对运算符进行重载。
Java中没有多重继承,但它确实通过接口恢复了多重继承的很多功能。
Java中没有模板,但它确实通过泛型恢复了模板的很多功能。
在Java中,类可以有一个与类具有相同类型参数的构造器,但这个构造器没什么特殊的地位,不同于C++中的副本构造函数。