java和c++的不同点(参考别人)

4. java和c++的不同点
4.1 java是解释型语言,c++是编译型语言。
4.2 java是纯面向对象的语言,所有的代码(包括函数、变量)都必须在类中定义。而c++中还有面向过程的东西,比如全局变量和全局函数
4.3 c++支持多继承。java中的类支持单继承,不支持多继承,但是支持多重继承;java中的接口是多继承,类对接口的实现也是多实现
4.4 c++有指针,java没有指针
4.5.1 引用不同

​ 对于 类名 变量名;这条语句来说

​ c++中,实际上创建了对象,留出了这个对象的数据的空间

​ java中,只是创建了一个放置某一个对象的存储地址的空间。

4.5.2 赋值不同

​ 在c++中,b2=b1;是把b1对象的所有数据拷贝到另一个叫b2的对象中;而java中,这条语句是向b2拷贝了b1所指向的存储地址。现在b1和b21实际上指的是同一个对象,他们都是这个对象的引用。(java中如果想要从一个对象中复制数据到另一个对象中,必须保证一开始就有两个对象,然后分别拷贝每一个字段,等号不起复制作用)

4.5.3 new操作符

​ java :在java中任何创建对象的工作都必须使用到new,但是new在Java中返回一个引用

​ c++:返回一个指针

​ 释放空间(使用new向系统申请的空间,不再使用):

​ java:不需要担心,有垃圾收集机制(GC机制)。Java每隔一段时间就去查看每一块由new开辟的内存,看指向它的有效引用是否依旧存在。如果这个引用不存在,系统会自动将这块空间归入空闲内存区,这个过程叫做垃收集。几乎不可能出现“存储泄露”。

​ c++:需要开发自己管理内存,析构函数,使用delete。容易忘记删除存储空间,导致“存储泄露”,从而消耗系统资源

【析构函数:C++中析构函数是提供一个在对象删除前可以释放这个对象所占用的资源的机会,但是Java并未提供“析构函数”或者类似的概念。】

4.5.4 相等与同一

​ Java中,基本数据类型使用==是判断两个变量是否有相同的值,但是进行对象判断时,判断的是类的引用是否一致(是否指向同一个对象)。java判断两个对象是否有相同的数据,使用Object类中的equals方法(Object类是所有类的根类)

​ c++中,==不光进行两个数值型变量是否含有相同的数据,也会判断两个对象是否有相同的数据。

4.5 重载操作符

c++中,可以重新定义+、*、=及大多数其他操作符,以便使他们在特定的类中达到不同的效果。

java中没有重载操作符,但是可以使用命名的方法,比如add()或者其他名字

4.6 基本数据类型

boolean,byte,char,short,int,long,float,double

4.6.1 真/假

c/c++:用整数来表示真假(非0为真,0为假)

java:使用独立的类型boolean来表示真假(true,false)

4.6.2 数据类型的字节

c/c++:int型的大小可能不同,取决于运行的计算机环境

java中,一个int型的变量永远是32位(4字节),与不同操作系统对应不同的jvm造成的java跨平台有关

Java没有Sizeof()。在C\C++中,sizeof()操作符可以告诉我们为数据项分配的字节数,因为C++中不同的数据类型在不同的机器上可能有不同的大小。但是Java中所有数据类型在所有机器中大小都是相同的。(例如,C++的int在16位机器上为16位,在32及以上为32位,long在32位及以下为32位,在64位上为64位)

4.6.3 转换

java:相较于c/c++,java属于强类型语言。在其他语言中可以由系统自动进行的替换,在java中需要显式的替换,否则会出现ClassCastException(类型不匹配)

c++:支持强制自动转型

4.7 输入/输出

【并非只有列举的,只是常用的输入/输出方法】

c:输出:printf() 输入:scanf()

c++:输出count() 输入:cin()

4.8 作用域(c、c++、java的作用域由花括号的位置决定)
{  

 	int x=12;

​	{

​		int x=96;

​	}

}

以上代码在c/c++中是合法的(c/c++会将较大作用域的变量隐藏起来),但在java中编译器会报告该变量已定义(java不会隐藏)

4.9 基本成员的默认值

当变量作为类的成员时,java才确保给定默认值,以确保那些基本类型的成员变量得到初始化,但是c++没有此功能。而对于局部变量未初始化,c++编译器会对其予以警告,java则会视为错误(没有使用不会报错;不初始化但要使用,会报错)。

4.10 移位操作符

java中新增了一种“无符号”右移位操作(>>>),它使用“零扩展”,无论正负,都在高位插入0.这是c/c++没有的。

4.10 类型转换

java允许我们把任何基本数据类型转换为其他基本数据类型(布尔不参与)

4.11 goto

c++中goto起跳转作用

java中有goto(保留字),但是不起作用。java是采用做标记来实现跳转的

比如:


```java
ok:

for(int i=0;i<50;i++){

​	for(int j=0;j<20;j++){

​		//break;	//continue;//continue ok;if(j=5) break ok;	

​	}

}
4.12 Java没有Struct或者Union
4.13 java的泛型不允许使用基本数据类型
4.14 数组

在c++中,数组定义时,已经分配存储空间,并可以使用。 (定义时指定数组大小)

在java中,数组定义时,int arr[],只字义了数组变量,数组是不可以使用的。 只有数组new以后,才会创建数组,分配存储空间,并可以使用。 (定义时指定数组大小是非法的,创建时指定数组大小)

参考资料:

https://blog.csdn.net/qq_26079093/article/details/94477842?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158755771919724845045336%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=158755771919724845045336&biz_id=0&utm_source=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v25-1

推荐查看:https://blog.csdn.net/u012485480/article/details/79592072

大部分来自于《Java数据结构和算法》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
### 回答1: 《C++面向对象高效编程 第2版》是一本关于C++编程的书籍。本书主要介绍了面向对象编程的概念、原则和技巧,以及如何利用C++语言进行高效的面向对象编程。 在书中,作者详细讲解了C++的面向对象特性,包括封装、继承和多态等。同时,还介绍了C++中的其他重要特性,如模板、异常处理和STL库等。这些知识点的讲解结合了大量的例子和实践,使读者能够更好地理解和应用这些概念。 本书在第2版中进行了更新和扩充,添加了新的内容,涉及了现代C++的一些特性和技术,如智能指针、移动语义和并发编程等。这些新的内容可以帮助读者更好地应对现代软件开发的需求和挑战。 与此同时,本书还提供了大量的编程实践和案例,帮助读者掌握实际的编程技巧和经验。通过这些实践,读者可以学习到如何编写高效、可复用和易于维护的C++代码。 总之,《C++面向对象高效编程 第2版》是一本适合C++初学者和有一定经验的程序员阅读的书籍。它不仅介绍了面向对象编程的基本概念和技巧,还提供了大量的实例和编程实践,帮助读者掌握C++语言的高效应用。无论是想深入学习C++面向对象编程的基础知识,还是想了解C++中一些高级特性的使用,这本书都是一本值得推荐的参考书。 ### 回答2: 《C++面向对象高效编程 第2版》是一本关于C++面向对象编程的经典教材。本书的PDF版本可以在网络上进行搜索和获取。该书全面介绍了对象、类、继承、多态等C++面向对象编程的基础知识,同时还深入讲解了C++的高效编程技巧和最佳实践。 在本书中,作者详细解析了C++的语法和特性,并提供了大量的示例代码和演示,以帮助读者更好地理解和掌握面向对象编程的概念和技术。此外,本书还介绍了一些高级主题,如异常处理、模板编程、STL等,在帮助读者提高编程能力的同时,也为读者拓宽了编程思维。 通过学习《C++面向对象高效编程 第2版》PDF版,读者可以系统地学习C++面向对象编程的知识,深入理解面向对象编程的原理和思想,并能够灵活运用这些知识进行开发和设计。同时,本书还提供了一些经验和技巧,帮助读者编写出高效、可维护的C++代码。 总而言之,该书是一本重要的学习资料,不仅适合初学者入门,也适合有一定C++编程基础的开发者进一步提升自己的编程水平。通过阅读《C++面向对象高效编程 第2版》PDF版,读者将能够系统学习C++面向对象编程,并在实际开发中运用所学知识,提升自己的编程能力。 ### 回答3: 《面向对象高效编程 第2版》是一本关于面向对象编程的书籍,主要介绍了面向对象编程的原理、思想和最佳实践。 在这本书中,作者首先介绍了面向对象编程的基本概念,包括类、对象、继承、多态等。然后,作者详细介绍了如何有效地使用面向对象编程进行软件开发。他提出了一些实用的技巧和方法,帮助读者更好地理解和应用面向对象编程的思想。 除了介绍基本的面向对象编程理论外,这本书还提供了大量的案例和示例代码,帮助读者实际运用所学知识解决实际问题。这些案例涵盖了不同领域的应用,包括图形界面、网络编程、数据库操作等,让读者能够从不同角度了解面向对象编程的实际应用场景。 此外,这本书还介绍了一些常用的面向对象编程语言,如JavaC++和Python等。作者通过比较不同的编程语言特点和应用场景,帮助读者选择合适的编程语言,并指导读者如何在具体的编程语言中高效地实践面向对象编程。 总之,《面向对象高效编程 第2版》是一本很好的面向对象编程学习资料。无论是初学者还是有一定经验的开发者,都能从中获取到宝贵的学习经验和实践技巧。通过阅读这本书,读者能够对面向对象编程有更深入的理解,提升自己在软件开发中的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值