C++ 与 Java 语言对比

简介:

今天一大早来到实验室,突发地想要写点什么!

做 Java 已经几年了,以前也学习过 C++ ,但是从来没有真正对比过 Java 和 C++ 的具体不同。
现在项目要用 VC ,熟悉中不得不把两者做个比较。

这里只是简单罗列出两者在语言上的不同, Java 偏应用层, C++ 偏低层,做为一个软件开发着,是应该掌握的,这可是我们计算机专业的看家语言,目前市场上 60% 的人会 Java, 40% 的人会 C++ ,这篇文章没有具体的展开。如果某本书是以这种方式写的,即实战型的,对有经验的人来说,会接受很快。

请大家始终记得 OOP 的三大精神 --------- 封装,继承,多态。

1 . Java 是完全封装的,而 C++ 的函数是可以定义在 Class 的外部的。从这里就可以看出 C++ 的 OO 思想不够彻底,至少在封装这一点上。

2. C++ 中有拷贝构造函数,可以把一个对象的属性 copy 到另一个对象里 , 也叫对象赋值,而 Java 是用 Clone 实现的。

3. Java 的世界是 Object 世界(当然除了基本类型,这是 Java 美中不组的一点),对象之间的关系是 Reference 的,象 C++ 中的指针,我们叫他句柄。但在 C++ 中对象之间是可以直接赋值的!在 Java 中只是句柄和句柄之间的转换! Java 和 C++ 都有 this, 在 C++ 中 this 表示指针,而在 Java 我们叫他引用。但在用法上大同小异。

4. C++ 中有所谓的析够函数,而 Java 中也有一个类似的东西叫做 finalize, 是 Object 类的一个方法, 但 Java 中有个很好的东东就是自动回收机制。而 C++ 中你new 的东西不 delete 的话是不会自动清理内存的,所以 Java 要省事些啊 !

5 . C++ 的函数有个默认的概念,在 Java 中是没有的。但 JDK1.5 的范型的 String… 参数似乎有点象 , Java 在最初抛弃 C++ 一些思想之后,现在似乎也慢慢也入了一些东西!

6. static 关键字 , C++ 和 Java 中意思基本相同, C++ 中 static 变量必须在类外初始化。

7. C++ 中的对象成员要在本类的构造函数之前构建,而 Java 没有这个规则, Java 的对象和普通变量一样简单。

8. C++ 有个常量修饰符 const, 而 Java 中一个常量一般是用 static + final 等价实现。

9 .可能写 Java 的朋友很不习惯的就是 C++ 的每个类都有个分号结尾。

10 . Java 有个很好的东西叫包,使得全世界的类不会发生冲突。在 C++ 也有一个类似的东西叫做作用域运算符 “ :: ” 表示。

11 . Java 在子类的方法重载中要想调用父类的同名方法只要用 Super 关键字,而在 C++ 中要用基类名 + 域运算符( :: )以达到同样的效果。

12. C++ 有多重继承,而在 Java 中只是单根继承,但是用 Java 的接口可以达到类似的效果。多重继承有二义性,但可用虚基类( virtual )解决该问题。

13. Java 中的多态完全是继承的原因,而 C++ 除了继承又引入了虚基类和虚函数(实现了运行时多态性)的概念。

14. C++ 中声明了纯虚函数的类为抽象类,而在 Java 中有 abstract 声明的 Method (当然类也要用 abstract 修饰) 就是抽象类 , 在抽象类方面 Java 原自 C++, 即两者观念上是一致的。

15 . Java 中的对象全都是 new 出来的,而 C++ 不同,当然他也有 new 功能, Java 中理论上你可以随意 new Object, 他有 gc 这个对象管家,而 C++ new 的 Object 你一定要手动 delete 他。

16 . C++ 中有运算符重载 , Java 里只有 + 号有重载的意思,不过在 JDK5 中也有其他的运算符重载,比如两个类对象可以直接相加。 C++ 可以将自定义类型强制转换为基本类型,如将一 Test 类的对象,强制转换为 int 类的对象,要达到这个效果就要用到 operator 关键字, Java 除了 8 大基本类型以外都是 OO 的,但 Java 也提供了基本类型的对应 Class 类型。

17 . C++ 中有模板的概念 ( 类模板,函数模板 ) ,在早期的 Java 版本 (1.4 之前 ) ,没有模板的概念,但 1.5 引入了范型,与模板的思想类似,这可是好东西。如果你看Java 原码库,你会发现他变化的好大。

小结 :

1. 学习任何东西,往往在对比中会有更好的收获。

2. 当然 C++ 和 Java 还有很多不同,这里就不一一列举,感性趣的朋友可以继续总结。

3. 相比之下你会觉得 Java 的世界更美好。但要学好 Java 你没有理由不去学 C++ 。

本文转自BlogJava 新浪blog的博客,原文链接:C++ 与 Java 语言对比,如需转载请自行联系原博主。

相关文章
|
2月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
90 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
28天前
|
SQL 安全 Java
安全问题已经成为软件开发中不可忽视的重要议题。对于使用Java语言开发的应用程序来说,安全性更是至关重要
在当今网络环境下,Java应用的安全性至关重要。本文深入探讨了Java安全编程的最佳实践,包括代码审查、输入验证、输出编码、访问控制和加密技术等,帮助开发者构建安全可靠的应用。通过掌握相关技术和工具,开发者可以有效防范安全威胁,确保应用的安全性。
48 4
WK
|
1月前
|
安全 Java 编译器
C++和Java哪个更好用
C++和Java各具优势,选择取决于项目需求、开发者偏好及目标平台特性。C++性能出色,适合游戏、实时系统等;Java平台独立性强,适合跨平台、安全敏感应用。C++提供硬件访问和灵活编程范式,Java有自动内存管理和丰富库支持。两者各有千秋,需根据具体需求选择。
WK
20 1
|
2月前
|
IDE Java 程序员
C++ 程序员的 Java 指南
一个 C++ 程序员自己总结的 Java 学习中应该注意的点。
24 5
|
2月前
|
Java 程序员 编译器
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。
在Java编程中,保留字(如class、int、for等)是具有特定语法意义的预定义词汇,被语言本身占用,不能用作变量名、方法名或类名。本文通过示例详细解析了保留字的定义、作用及与自定义标识符的区别,帮助开发者避免因误用保留字而导致的编译错误,确保代码的正确性和可读性。
55 3
|
2月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
50 5
|
2月前
|
移动开发 Java 大数据
深入探索Java语言的核心优势与现代应用实践
【10月更文挑战第10天】深入探索Java语言的核心优势与现代应用实践
82 4
WK
|
1月前
|
开发框架 移动开发 Java
C++和Java哪个更适合开发移动应用
本文对比了C++和Java在移动应用开发中的优劣,从市场需求、学习难度、开发效率、跨平台性和应用领域等方面进行了详细分析。Java在Android开发中占据优势,而C++则适合对性能要求较高的场景。选择应根据具体需求和个人偏好综合考虑。
WK
51 0
WK
|
1月前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
65 0
|
2月前
|
缓存 并行计算 Java
C++矢量运算与java矢量运算
本文探讨了C++和Java中的矢量运算与标量运算的性能比较,解释了矢量运算的原理和为什么它比标量运算快,包括并行性、数据局部性、指令优化和数据重用等优势。文章还提供了C++和Java的矢量运算示例代码,并展示了运行结果,以证明矢量运算在处理大量数据时的性能优势。
24 0
C++矢量运算与java矢量运算