4.Java 和 C++ 的对比-灵析社区

菜鸟码转

Java 和 C++ 都是典型的面向对象(Object Oriented)的编程语言。

1.Java 语言:

Java 是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级 Web 应用开发和移动应用开发。Java 语言由 Sun 微系统(Sun MicroSystems)公司在 1995 年正式发布。Java 伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

Java 编程语言的风格十分接近 C++ 语言。继承了 C++ 语言面向对象技术的核心,舍弃了容易引起错误的指针,以引用取代;移除了 C++ 中的运算符重载和多重继承特性,用接口取代;增加垃圾回收器功能。引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。Java 不同于一般的编译语言或解释型语言。它首先将原始码编译成字节码,再依赖各种不同平台上的虚拟机 (JVM)来解释执行字节码,从而具有 “一次编写,到处运行”的跨平台特性。

2.两者之间的比较:

  • 二者的相同之处:

C++ 与 Java 均支持面对对象(Object Oriented),支持类、继承、封装等常见的概念。

  • 二者的不同之处:

Java 被编译成字节码,并运行在虚拟机 JVM 上,和开发平台无关,具有跨平台的特性;C++ 直接编译成可执行文件,是否跨平台在于用到的编译器的特性是否有多平台的支持。

Java 是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而 C++ 允许将函数和变量定义为全局的。

由于Java 被编译为字节码,只要安装能够运行 Java 的虚拟机即可运行 Java 程序,因此 Java 程序具有很强的可移植性,具有 “一次编写,到处运行” 的跨平台特性;而 C++ 跨平台后,必须需要重新编译;

Java 语言具有垃圾回收机制,由系统进行分配和回收内存,编程人员无需考虑内存管理的问题,可以有效的防止内存泄漏,有效的使用空闲的内存。Java 所有的对象都是用 new 操作符建立在内存堆栈上,类似于 C++ 中的 new 操作符,但是当要释放该申请的内存空间时,Java 自动进行内存回收操作,Java 中的内存回收是以线程的方式在后台运行的,利用空闲时间。C++ 则需要程序员进行内存管理,当资源释放时需要程序员进行手动释放内存空间。

C++ 支持多重继承,允许多个父类派生一个类,虽然功能很强大,但是如果使用的不当会造成很多问题,例如:菱形继承;Java 不支持多重继承,但允许一个类可以继承多个接口,可以实现 C++ 多重继承的功能,但又避免了多重继承带来的许多不便。

C++ 支持方法与操作符的重载;但 Java 只支持方法重载,不支持操作符重载。

C++ 用 virtual 关键字标记的方法可以被覆盖;Java 中非 static 方法均可被覆盖,Java 中的方法默认均可以被覆盖。

C++ 可以直接操作指针,容易产生内存泄漏以及非法指针引用的问题;Java 并不是没有指针,虚拟机(JVM)内部还是使用了指针,只是编程人员不能直接使用指针,不能通过指针来直接访问内存,并且 Java 增加了内存管理机制。

C++ 标准库不提供 thread 相关接口;Java 的标准 SDK 提供 thread 类。

C++ 支持结构体(structure)与联合体(union),Java 不支持结构体(structure)与联合体(union)。

从应用场景来说, C++ 可以直接编译成可执行文件,运行效率比 Java 高。Java 目前主要用来开发 Web 应用。C++ 主要用在嵌入式开发、网络、并发编程、图形图像处理、系统编程的方面。

阅读量:2022

点赞量:0

收藏量:1