【JAVA】JAVA与C++的区别与联系

简介: 【JAVA】JAVA与C++的区别与联系

在这里插入图片描述


个人主页:【😊个人主页】
系列专栏:【❤️初识JAVA】


@[toc]


前言

也许是因为最先接触的编程语言是C语言,在此之后,每当我学习一门新的语言时,总会自然的去与C语言进行比较,JAVA也自然在内,但我总感觉不对,JAVA这个年轻人不应该不讲武德的去偷袭C语言这个老同志,那么就让JAVA与C语言的“儿子”C++进行比较吧!
在这里插入图片描述

两方介绍

C++

C++(c plus plus)是一种计算机高级程序设计语言,由C语言扩展升级而产生,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。

C++既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行==基于过程的程序设计==。 C++几乎可以创建任何类型的程序:游戏、设备驱动程序、HPC、云、桌面、嵌入式和移动应用等。 甚至用于其他编程语言的库和编译器也使用C++编写

在这里插入图片描述

JAVA

Java 是一个通用术语,用于表示 Java 软件及其组件,包括“Java 运行时环境 (JRE)”、“Java 虚拟机 (JVM)”以及“插件”。

Java具有大部分编程语言所共有的一些特征,被特意设计用于互联网的分布式环境。==Java具有类似于C++语言的形式和感觉,但它要比C++语言更易于使用==,而且在编程时彻底采用了一种以对象为导向的方式。

在这里插入图片描述


不同

==|Java不支持指针、模板、指针重载、联合等|==

Java的启动者最初说“没有指针!”然而,当许多开发人员谈到如何在没有指针的情况下运行时,启动者开始说“受限指针”。Java支持它所称的“引用”引用的行为相当于C++语言中的指针。然而,您不能在Java中对指针执行数字运算。引用有类型,它们是安全组成的。==这些引用不能被破译为原始地址,也不允许进行危险的更改==。C++支持指针、结构、联合、模板、运算符重载或指针运算。

==|支持析构函数|==

Java不支持析构函数,它有一个自动垃圾收集系统。C++支持析构函数,当一个对象被销毁时,它会被调用。

==|条件编译和包含|==

Java不支持条件编译和包含。C++支持条件编译和包含。

==|线程支持|==

Java内置了Java中的线程支持。Java中有一个thread类,inherit可以创建一个新的线程来重写run方法。C++没有内置的支持,它依赖于第三方库。

==|默认参数|==

Java不支持默认参数,Java中没有(::),策略定义应该可靠地发生在类内部,因此也不需要确定范围。C++支持的默认参数,C++具有范围解析(::),它利用和表征一个类外的策略,从一个邻域变量附加存在类似的名称的程度内获得一个世界范围内的变量。

==|转到语句|==

Java中没有goto语句。==关键字const和goto是保留的,即使它们没有被使用==。C++有goto功能,尽管如此,使用goto解释并不是一个很好的实践。

==|多重继承|==

java不提供多个继承,至少在C++中没有这样的意义。C++支持继承,关键字virtual可用于确定各种遗留问题(如果有)中的歧义。

==|异常处理|==

Java异常处理是不同的,因为没有析构函数。在Java中,try/catch必须定义函数是否声明可能引发异常。在C++中,不管容量是否抛出豁免,都可以排除尝试/获取。

==|方法重载和操作符重载|==

Java有方法重载,但没有操作符重载,String类确实使用+和+=运算符连接字符串,字符串表达式使用自动类型转换,但这是一种特殊的内置情况。C++支持技术重载和管理员过载。

==|文件注释|==

Java内置了对文档注释的支持(/*.../);因此,Java源文件可以包含自己的文档,这些文档由单独的工具(通常是Javadoc文档)读取并重新格式化为HTML。这有助于以轻松的方式维护文档。C++不支持文档注释。

==|平台无关|==

Java在很大程度上是解释的,因此与平台无关。C++创建抗议代码,类似的代码可能无法在不同的阶段运行。

关系

java和C++没有关系,如果硬说有什么联系的话,倒是可以说语法上比较相似,Java诞生于C++之后,由于C++语言本身比较庞杂,所以Java可以说是在语法上对C++的优化与简化,但是Java是运行在虚拟机之上,不具备底层控制能力,这一点与C++不同。Java格式的文件一般是有包含Java源代码的文件,未经过编译,是不能直接运行的,所以Java软件中不会有Java格式文件,而且软件的作者也不会让自己的源代码公开,这样对自己的软件保护不利。至于jad文件,主要是对可执行文件打包所产生的文件,这种文件可以被识别并直接运行,使部署安装变的简洁。

在这里插入图片描述

目录
相关文章
|
2月前
|
jenkins Shell 测试技术
|
3月前
|
Java 测试技术
Java浮点类型详解:使用与区别
Java中的浮点类型主要包括float和double,它们在内存占用、精度范围和使用场景上有显著差异。float占用4字节,提供约6-7位有效数字;double占用8字节,提供约15-16位有效数字。float适合内存敏感或精度要求不高的场景,而double精度更高,是Java默认的浮点类型,推荐在大多数情况下使用。两者都存在精度限制,不能用于需要精确计算的金融领域。比较浮点数时应使用误差范围或BigDecimal类。科学计算和工程计算通常使用double,而金融计算应使用BigDecimal。
1436 102
|
4月前
|
存储 缓存 人工智能
Java int和Integer的区别
本文介绍了Java中int与Integer的区别及==与equals的比较机制。Integer是int的包装类,支持null值。使用==比较时,int直接比较数值,而Integer比较对象地址;在-128至127范围内的Integer值可缓存,超出该范围或使用new创建时则返回不同对象。equals方法则始终比较实际数值。
140 0
|
2月前
|
安全 jenkins Java
Java、Python、C++支持jenkins和SonarQube(一)
Jenkins 是一个开源的 持续集成(CI)和持续交付(CD) 工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
168 5
|
2月前
|
jenkins Java Shell
Java、Python、C++支持jenkins和SonarQube(全集)
Jenkins 是一个开源的持续集成(CI)和持续交付(CD)工具,用于自动化构建、测试和部署软件项目。它基于 Java 开发,支持跨平台运行,并拥有丰富的插件生态系统,可以灵活地扩展功能
221 1
|
2月前
|
jenkins Java 持续交付
|
2月前
|
安全 Java API
Java SE 与 Java EE 区别解析及应用场景对比
在Java编程世界中,Java SE(Java Standard Edition)和Java EE(Java Enterprise Edition)是两个重要的平台版本,它们各自有着独特的定位和应用场景。理解它们之间的差异,对于开发者选择合适的技术栈进行项目开发至关重要。
243 1
|
2月前
|
jenkins Java 测试技术
|
5月前
|
存储 Java C语言
Java List 复制:浅拷贝与深拷贝方法及区别
我是小假 期待与你的下一次相遇 ~
466 1
|
4月前
|
安全 算法 Java
Java 中 synchronized 与 AtomicInteger 的区别
在Java多线程编程中,`synchronized`和`AtomicInteger`均用于实现线程安全,但原理与适用场景不同。`synchronized`是基于对象锁的同步机制,适用于复杂逻辑和多变量同步,如银行转账;而`AtomicInteger`采用CAS算法,适合单一变量的原子操作,例如计数器更新。二者各有优劣,应根据具体需求选择使用。
109 0