C++ 和 Java 的区别和联系


通常,我们聊到Java,第一印象“面向对象”,“没有指针,编写效率高,执行效率较低”。更深入、专业一点就谈论 “Java内存自动回收(GC垃圾回收机制),多线程编程”。

Java的三大特性是封装、继承和多态。

Java 与 C++ 的区别?

  • 尽管 Java 是基于 C++ 的,但是相比之下,Java 是一种更纯粹的面向对象程序设计语言。在 Java 中,一切都被视为对象。
  • C++ 是在 C 语言的基础上开发的一种面向对象编程语言,C++ 完全兼容 C 语言。(C语言是面向过程语言,而C++是面向对象语言)C++ 一开始就是 C with class ,C 语言其实是 C++ 的子集。

总结如下:

  1. Java 的应用在高层,C++ 在中间件和底层

  2. Java 语言给开发人员提供了更为简洁的语法;取消了指针带来更高的代码质量;完全面向对象,独特的运行机制是其具有天然的可移植性。

  3. Java 是运行在JVM上的,之所以说它的可移植性强,是因为 JVM 可以安装到任何的系统

  4. C++ 不是不能在其他系统运行,而是 C++ 在不同的系统上运行,需要不同的编码(这一点不如 Java,只编写一次代码,到处运行)。Java 程序一般都是生成字节码,在 JVM 里面运行得到结果。

  5. Java 在 web 应用上具有C++ 无可比拟的优势

  6. Java 在桌面程序上不如 C++ 实用,C++ 可以直接编译成 exe 文件,指针是 C++ 的优势,可以直接对内存的操作,但同时具有危险性。(操作内存的确是一项非常危险的事情,一旦指针指向的位置发生错误,或者误删除了内存中某个地址单元存放的重要数据,后果是可想而知的)

  7. 垃圾回收机制的区别。C++用析构函数回收垃圾,Java自动回收(GC算法),写 C 和 C++ 程序时一定要注意内存的申请和释放。

  8. Java 丰富的插件是 Java 发展如此迅速的原因

  9. Java 很大的沿袭了 C++ 的一些实用结构

  10. 对于底层程序的编程以及控制方面的编程,C++很灵活,因为有句柄的存在。

Java 并不仅仅是 C++ 语言的一个变种,它们在某些本质问题上有根本的不同:

  1. Java 比 C++ 程序可靠性更高。 有人曾估计每50行 C++ 程序中至少有一个BUG。姑且不去讨论这个数字是否夸张,但是任何一个 C++ 程序员都不得不承认 C++ 语言在提供强大的功能的同时也提高了程序含 BUG 的可能性。Java 语言通过改变语言的特性大大提高了程序的可靠性。

  2. Java语言不需要程序对内存进行分配和回收。 Java 丢弃了 C++ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java 语言不使用指针,并提供了自动的废料收集,在 Java 语言中,内存的分配和回收都是自动进行的,程序员无须考虑内存碎片的问题。

  3. Java语言中没有指针的概念,引入了真正的数组。 不同于 C++ 中利用指针实现的“伪数组”,Java 引入了真正的数组,同时将容易造成麻烦的指针从语言中去掉,这将有利于防止在 C++ 程序中常见的因为数组操作越界等指针操作而对系统数据进行非法读写带来的不安全问题。

  4. Java 用接口(Interface)技术取代 C++ 程序中的多继承性。 接口与多继承有同样的功能,但是省却了多继承在实现和维护上的复杂性。

提问:

  1. Java 能不能多继承?

Java 中的接口之间可以实现多继承,但是 Java 中的类只能实现单继承。

类不能实现多继承的原因是: 如果类之间实现了多继承,将可能造成程序的紊乱。

  • 因为类与类之前可能存在相同的方法,程序在运行子类的对象或者子类调用某一方法,若父类中含有相同的方法,比如父类中都含有show()的方法,子类调用时系统将不知调用哪个父类的方法,从而程序报错。
  • 所以 Java 的类与类之间是不能实现多继承的,只能实现单继承。接口之间能实现多继承。

Java 和 C++ 各有各的优势,无需争论那种语言好,哪种语言不好,能够存在就一定有它的优势,只要你决定了要学编程就扎实的学好,编程语言都是相同的,学会一种,其他的学起来就很容易了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值