java与C++的区别

C和CPP的区别 & C++,Java and Python的区别 今天在论坛上看到两个学神讨论C++的优劣性引申出来的各种问题,深深感觉自己差距很大,现就部分问题做个小的总结。 C和CPP的区别: 1. C没有bool类型。布尔类型是int。0是假,非0是真。     2. C里字符常量(如'a'、'\n'、'\0'等)是int型,而C++里是char型。但这不影响使用。     3. 没有引用类型的变量,一般使用指针。函数的参数也不能是引用类型,想 阅读详情

摘自《Java程序设计与问题解决:基础篇》附录

个人感觉还是蛮全的,推荐看一下

 

Java和C++看起来很类似,但两者之间的差别要多于粗略地查看这两种语言时所认为的那样。我们不会对所有的区别进行描述,但为了帮助从C++(或C)向Java过渡,会对两者的一些相似及不同之处进行介绍。


基本类型
Java中的基本类型基本上和C及C++中的一样(int、short、long、float、double和char),但Java添加了byte和boolean类型。(近期的C++版本中也有了bool类型,对应于Java中的boolean类型。)Java中没有名为long double的类型。与C和C++不同,在Java中,用字节表示的某些特定基本类型值的大小是完全确定的,与实现无关。细节请参见《Java程序设计与问题解决:基础篇》的第2章。


字符串
与C和C++的某些版本不同,Java中的字符串不是特定类型的字符数组。在Java中有一个预定义的String类型。(对String类的讨论是从《Java程序设计与问题解决:基础篇》的第2章开始的。)Java的String类与C++近期版本中的string类有些类似。


控制流程
Java中的控制结构(if-else、switch、while、do-while和for)与C和C++一样。但是,有一些差别会影响到对Java中控制结构的使用。具体来说,Java中没有逗号运算符,Java中的boolean类型既不是一个数字类型,也无法将其值强制转换为一个数字类型,而且赋值运算符在Java中比在C和C++中表现得更好一些。


Java中没有逗号运算符。但是,Java中的for语句定义为可以使用逗号,就像下列代码这样:
for (n = 1, product = 1; n <= 10; n++)
product = product * n;
但这个“逗号运算符”只能在for语句中使用。

 

在Java中,boolean类型有两个值:true和false,无法将这两个值转换成数字值,用强制类型转换也不行。


C和C++中的一个典型错误就是用=取代了==,就像下列代码这样:
if ( n = 42 )
⋯
在C和C++中,表达式n=42会返回值42,根据所用的C或C++版本的不同,这个表达式可以是或将要被转换成一个布尔值。在Java中,n=42也会返回值42,但42不是boolean类型的,它也不会被转换成boolean类型。因此,在Java中,这种错误会引发一个编译器错误消息。


相等性测试
在Java中测试一个类类型对象的相等性是很麻烦的。对基本类型的值来说,运算符==会如你所愿地对相等性进行测试。但是,用==对两个类类型的对象进行比较时,测试的是对象是否处于同一个内存单元,而不是它们是否具有相同的数据。Java类通常会定义一个名为equals的方法来测试两个对象是否是我们直觉意义上的相等。在Java中不能重载==运算符(或任何运算符)。


main方法(函数)及其他方法
在Java中,函数被称为方法(method)。main方法(函数)在Java中的功能与在C和C++中一样。在Java中,main方法头部通常如下所示。
public static void main(String[] args)
在Java中,所有的方法—实际上,任意类型的所有代码—都是在类中定义的。

文件及包含文件
Java中没有#inlude指示。Java中确实有一个import语句,可以导入一整个包(库)以供
在一个类(或文件)中使用。
java程序的总体布局是由很多类组成的,每个类都处于一个文件中。如果所有的类都位于同一个目录(文件夹)中,Java需要使用某个类(文件)的时候,就会自动地找到它。通过使用import语句,也可以将不同目录中的类(文件)组合起来。细节请参见《Java程序设计与问题解决:基础篇》的5.7节(包)。


在Java中,一个类必须位于一个与类同名、但具有后缀.java的文件中。例如,一个名为MyClass的类必须位于一个名为MyClass.java的文件中。类的编译版本会被自动地放在一个名为MyClass.class的文件中。


类和方法(函数)定义
Java对方法的定义及声明不加区别(或者,如某些作者所述,Java对方法的原型和方法的定义不加区别)。所有的方法(函数)都只有定义而没有前向引用。没有独立于方法定义的“头部”或“特征”或“原型”。所有的方法必须都是在某个类中定义的。所有的类定义都完全是在一个文件中完成的,没有任何类型的前向引用或接口文件。尤其是,所有的方法定义全都是在它们的类定义中给出的。细节请参见《Java程序设计与问题解决:基础篇》的第4章(定义类和方法)。


Java中没有指针
Java中没有指针类型。但Java是有指针的。实际上,所有的对象都是以指针的方式命名的。不过,指针被称为引(reference),会被自动处理。例如,一个String类型的变量中会包含对一个字符串的引用(指针),但没有String指针类型。细节请参见《Java程序设计与问题解决:基础篇》的4.3节。


方法(函数)参数
严格来讲,Java中只有一种参数传递机制,即,传值。但是,实际上,通常认为Java有两种类型的参数传递机制:一种用于基本类型(比如int、double和char),另一种用于类类型。对基本类型,唯一的参数传递机制就是传值。对类类型,参数传递机制也被称为传值,但传递的是类对象的引用(指针)。这就允许方法(函数)修改对象中的数据,因此,有些人认为这种机制应该被称为传引用机制。这并不符合大多数通常的传引用(call-by-reference)定义,但在实现一些简单任务时,它的表现与传引用非常相似。细节请参见《Java程序设计与问题解决:基础篇》的第4章和第5章。


数组
Java数组与C或C++数组很类似,但它们还是有些区别的,Java数组的表现更好一些。Java中的数组“知道”它的范围。如果a是一个数组,那么实例变量a.length中就包含了一个与数组可以承载的元素个数相等的整数。可以查看Java数组索引是否越界,如果代码试图使用一个越界的数组索引(下标),就会抛出一个异常。细节请参见《Java程序设计与问题解决:基础篇》的第6章。


垃圾回收
Java中的内存管理和垃圾回收是自动进行的。Java使用了new运算符来创建一个类类型的新对象(因此这个过程就是一种内存分配形式),但Java中没有其他的内存分配形式了。Java中没有程序员可以用来进行垃圾回收的机制。垃圾回收是自动进行的。


其他的比较
Java和C++中的注释在本质上是完全一样的。
Java中没有全局变量。
Java中没有枚举类型。
Java中没有typedef。
Java中没有结构或联合。
可以像在C++中那样,在Java中对方法(函数)名进行重载,但在Java中不能对运算符进行重载。


Java中没有多重继承,但它确实通过接口恢复了多重继承的很多功能。更多关于接口的细节请参见《Java程序设计与问题解决:基础篇》的第7章。


Java中没有模板,但它确实通过泛型恢复了模板的很多功能。


在Java中,类可以有一个与类具有相同类型参数的构造器,但这个构造器没什么特殊的地位,不同于C++中的副本构造函数。

JAVA和C++的区别 word文档建议初学JAVA时进行阅读 立即下载

相关推荐

ROS2理论与实践_宇树机器人Go2开发指南(文字)

本文介绍了Unitree Go2机器人ROS2开发环境的安装与配置流程。主要内容包括:1)从GitHub克隆unitree_ros2仓库;2)安装ROS2 Foxy版本依赖项;3)编译特定版本的CycloneDDS(0.10.2);4)编译unitree_go和unitree_api功能包;5)网络配置,包括设置静态IP和修改环境变量脚本setup.sh以指定网络接口。文章还提供了本地回环测试的替代方案,并建议配置完成后重启电脑。整个流程涉及ROS2环境切换、网络适配和编译安装等多个技术环节。

Li_Dongyi的博客 4205

C++与Java比较(转)

“作为一名C++程序员,我们早已掌握了面向对象程序设计的基本概念,而且Java的语法无疑是非常熟悉的。事实上,Java本来就是从C++衍生出来的。”  然而,C++和Java之间仍存在一些显著的差异。可以这样说,这些差异代表着技术的极大进步。一旦我们弄清楚了这些差异,就会理解为什么说Java是一种优秀的程序设计语言。本附录将引导大家认识用于区分Java和C++的一些重要特征。  (1) 最大的障碍...

keke_Xin的专栏 4032

深入解析Android14应用安装权限:从声明到授予的完整适配指南

本文深入解析Android14应用安装权限的适配方法,重点介绍了从权限声明到授予的完整流程。与Android13相比,Android14在权限管理机制上进行了重要调整,特别是通过AppOpsManager实现权限的对象化封装。文章详细讲解了权限声明的基础配置、Framework层适配方案、运行时权限授予方法以及常见问题排查指南,帮助开发者高效完成Android14权限适配。

o9p0q1的博客 694

JAVA语言与C++相比优劣势分析

JAVA语言与C++相比优劣势分析 对于JAVA语言以及C++的定义我们在这里不再叙述,接下来我们直接分析 JAVA和C++相比其中的优劣势: 优势: 1.Java比C,C++简单,学起来比C\C++容易 2.Java完全对象化,比如数组在Java中是一个对象,含有length这个属性; 而不像C++中数组是一个指针。所以访问数组,Java都会进行边界检查,更

自知的博客 1万+

ANSYS HFSS 中的相控天线阵列仿真方法

相控天线阵列系统广泛使用,从国防雷达应用到商业 5G 应用。设计这些天线阵列涉及复杂的数学运算,需要全波仿真。Ansys HFSS 全场 3D 电磁仿真软件可以在合理的时间内以较低的计算成本仿真复杂的相控阵天线系统,同时考虑复杂激励、环境(即附近的天线)和平台对其性能的影响。本博客介绍了可用于有效仿真相控天线阵列的不同方法。以下是不同仿真方法的简要概述,视频链接中提供了完整的演示。ANSYS HFSS 提供 4 种不同的相控天线阵列仿真方法:1) 晶胞-无限阵列。

jkh920184196的博客 4254

11、Windows Autopilot 部署与设备注册全攻略

本文详细介绍了Windows Autopilot的完整部署流程,涵盖注册配置文件设置、注册状态页面(ESP)配置、设备注册方法(包括CSV导入、JSON注入、在线注册等)、自动化脚本实现及故障排除技巧。通过手动与PowerShell自动化两种方式指导用户完成配置,并提供流程图、最佳实践和常见问题解答,帮助IT管理员高效实现设备零接触部署与管理。

ii567的博客 342

C++与Java的语法区别

 C++与Java的语法区别首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别。main 函数C++//自由浮动的函数int main( int argc, char* argv[]){    printf( "Hello, world" );}Java// 每个函数都必须是一个类的一部分;当java 运行是一个特定类的主函数会被调用// (因此你可以让每个类都有一个main

只谈技术 1万+

Android 13.0 展讯平台关机充电动画横屏显示修改

在13.0的系统rom定制化开发中,在关于展讯平台的产品中,系统默认的充电动画是竖屏显示的,但是在像平板的产品中竖屏动画肯定不符合规范, 所以需要在平板TV产品中,充电动画同时也是需要修改为横屏显示的,接下来就来分析下充电动画的相关绘制流程,然后实现功能

安卓兼职framework和app工程师的博客 410

Cpp与Java的区别

1、区别 比较的基准 Cpp Java 平台依赖 依赖 不依赖 预处理机制 有 无 内存管理 程序员可访问可控制 系统控制 继承模式 允许单继承和多重继承 只允许具有抽象接口的单继承 可移植性 必须为平台重新编译源代码,因此代码不可移植 字节码(.class文件)可移植到平台特定 JVM 2、解释 1、Java 源代码在编译时被转换为字节码。编译器编译的过程将.java文件变为.class文件,.class文件是JVM看得懂的文件。在运行时,JVM再将这种.class文件

记录个人在工作学习中的思考和遇到的问题。 1871

IgH EtherCAT 从入门到精通:第 5 章 多主站与系统集成配置

本文介绍了 EtherCAT 多主站配置与系统集成方法。主要内容包括: 多主站实例配置原理:通过内核模块参数指定多个主站设备,每个主站独立管理一条 EtherCAT 总线,最多支持32个主站实例。 配置文件详解:在/etc/ethercat.conf中通过MASTER<X>_DEVICE变量定义各主站绑定的网卡或MAC地址,支持冗余备份配置。 系统服务集成:提供了systemd服务单元文件和传统init.d脚本两种方式实现开机自启动和管理,并建议通过override文件定制服务依赖关系。 架构示

从事嵌入式linux android驱动开发,拥有全栈能力 352

1、2022 应用密码学与网络安全会议亮点与关键技术解读

2022年应用密码学与网络安全会议(ACNS 2022)在意大利罗马成功举办,会议涵盖了密码学与网络安全的多个前沿领域,包括键控全同态加密、隐私保护技术、区块链、后量子密码学和多方计算等。会议共收录44篇论文,展示了众多创新的研究成果,为学术研究和实际应用提供了新的思路和方法。本次会议促进了学术界和工业界的交流与合作,推动了密码学与网络安全行业的发展。

blue的专栏 182

Java与C++的区别

C++和Java的区别: (面试问到这个问题,特来总结一下 根据C++Prime和Think in Java两本书总结而来) 尽管Java是基于C++的的,但是相比之下,Java是一种更纯粹的面向对象程序设计语言。在Java中,一切都被视为对象。 1. C++创建对象之后,需要再使用完将其调用delete方法将其销毁;Java有垃圾回收机制,用来监视new出来的所有对象,辨别不会再被引用的...

长弓smile的博客 4万+

基于51单片机的智能台灯设计:嵌入式程序设计实现

随着智能家居和物联网的快速发展,智能台灯作为一种典型的智能家居产品,已成为现代家庭中不可或缺的设备。传统的台灯只能提供简单的照明功能,而智能台灯不仅具备基础的照明功能,还能根据用户的需求进行自动调节,比如自动调节亮度、色温,甚至具备定时开关、远程控制等智能功能。本文将介绍如何基于51单片机设计一款智能台灯。我们将涉及硬件设计、嵌入式系统架构、传感器选择、调光控制、语音识别、远程控制等方面,详细阐述如何实现这些功能,并给出相关的代码和实现步骤。

2201_76125393的博客 836

[引用区别] c++中引用与java中引用区别

在Java中,类实例声明和构造是分开。"T a;"是声明,而"a=new T();"才是构造。引用声明和C++相同。但是Java的机制与C++不同,Java中的引用也叫句柄,或者说句柄才是其真实名称。类声明的都是一个句柄,调用构造函数才会使得句柄指向类实例。因此Java中没有类似于C++中的复制函数,因为Java的复制都是直接复制句柄内容。例如"T b=a;"只不过是将a的句柄复制(赋值)给了b,

Wait的专栏 8401

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java与C++的区别是什么?

Java和C++在设计理念、语法特性、内存管理、执行方式等方面存在显著差异。Java是一种面向对象的解释型语言,具有良好的跨平台性和安全性;而C++是一种通用的编译型语言,具有高效的执行速度和底层控制能力。选择哪种语言取决于具体的应用场景和需求。如果需要跨平台支持和安全性,Java是更好的选择;如果追求性能和底层控制能力,C++更为合适。8。

wang15510689957的博客 2166

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JAVA与C++的区别详解

转自:微点阅读https://www.weidianyuedu.com JAVA和C++都是面向对象语言。也就是说,它都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它 是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。   Java和c++的相似之处...

xiaoweids的博客 2万+

java与C++的区别与联系

java与C++

技术改变世界 443

有类似cpp的java书吗_C++与java编程区别(一)

C++ HelloWorldmain.cpp#include< iostream>using namespace std;class HelloWorld{public:void say(){cout<< "HelloWorld"<}};class HelloWorld_other{public:void say(){cout <}};void main(){H...

weixin_33891343的博客 135

JAVA和C++区别

 JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者, 而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。 Java和

zaowei21的专栏 3984

C++与Java的区别

其实无论是C++还是Java,都是面向对象的语言,有很多相似的特性:抽象、继承、封装、多态、代码的可重用性等等,在语法和概念上也极其相似。也有一些区别:C++是编译型的高级语言而Java是解释性的高级语言,C++拥有更快的编辑和执行速度,而Java也拥有着兼容性良好的优势,C++更适用于底层开发方面,Java更适用于网络编程方面,两种语言各有所长。在一些语法结构和对象的处理上也有所不同,而且Jav...

weixin_43343890的博客 733

Java和C++的区别

java和c++的区别(一)   JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,  而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,据弃了其他语言的不

saghir的专栏 1084

Java泛型 与 C++的模板有什么区别

C++ 模板: 功能更强大,支持复杂的模板元编程和特化,编译时生成不同版本的代码,性能上更具优势,但类型安全检查较晚,调试难度较高。Java 泛型: 提供类型安全、简单易用的泛型机制,适合大多数应用场景,运行时使用类型擦除,限制了灵活性和某些高级用法,但带来了更简洁的字节码和运行时表现。

5-StarrySky的博客 1381

Java/C++中数组的区别

1. 数组名区别 -------------------------------------- 1. java中不用说,本着一切皆对象的原则,所以java中的数组也是对象.那么数组类是哪个,当然不是java.util.Arrays.详见Java数组方法的思考 2. 而在c++中数组名其实是一种数据结构,有人会说不是指针吗,关于这一点见(C++中数组名其实是一种数据结构)。 从上面两点中我们

9478

C++与JAVA的区别

C++ 和 Java 语法特性的相似性 大约在上个世纪 90 年代中期,Sun 微系统公司的帕特里克 · 诺顿被自己写的 C 编译器弄得焦头烂额,大量的指针和难用的 API 接口,很可能毁掉 Sun 公司试图进入适用于小型家电设备的嵌入式设备领域的雄心壮志。作为当时 Sun 公司的首席科学家的比尔 · 乔伊果断地决定放弃使用 C 语言嵌入式系统,他们决定参考 C++ 的实现思想,但是放弃 C++...

Yanir的博客 305

Java与C++的区别、类与对象

Java与C++的区别 1.Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,C++ 为了兼容 C,既支持面向对象也支持面向过程。 2.Java 通过虚拟机从而实现跨平台特性,但是 C++ 依赖于特定的平台。 3.Java 没有指针,它的引用可以理解为安全指针,而 C++ 具有和 C 一样的指针。 4.Java 支持自动垃圾回收,而 C++ 需要手动回收。 5....

littleAusna的博客 1366
上一篇: java经典书推荐
下一篇: 螺旋矩阵
oopDesigner
博客等级 码龄18年 36粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值