6、 C++ 和 Java 区别(语言特性,垃圾回收,应⽤场景等)
指针: Java 语⾔让程序员没法找到指针来直接访问内存,没有指针的概念,并有内存的⾃动管理功能,从⽽有效的防⽌了 C++ 语⾔中的指针操作失误的影响。但并⾮ Java 中没有指针, Java 虚拟机内部中还是⽤了指针,保证了 Java 程序的安全。
多重继承: C++ 支持多重继承但 Java 不⽀持,但⽀持⼀个类继承多个接口,实现 C++ 中多重继承的功能,又避免了 C++ 的多重继承带来的不便。
数据类型和类: Java 是完全面向对象的语言,所有的函数和变量必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,对象将数据和⽅法结合起来,把它们封装在类中,这样每个对象都可以实现⾃⼰的特点和⾏为。 Java 中取消了 C++ 中的 struct 和 union 。
⾃动内存管理: Java 程序中所有对象都是⽤ new 操作符建⽴在内存堆栈上, Java自动进⾏无用内存回收操作,不需要程序员进⾏⼿动删除。⽽ C++ 中必须由程序员释放内存资源,增加了程序设计者的负担。 Java 中当⼀个对象不再被⽤到时,无用内存回收器将给他们加上标 签。 Java 里无用内存回收程序是以线程⽅式在后台运⾏的,利⽤空闲时间⼯作来删除。
Java 不支持操作符重载。操作符重载被认为是 C++ 的突出特性。
Java 不⽀持预处理功能。 C++ 在编译过程中都有⼀个预编译阶段, Java 没有预处理器,但它 提供了 import 与 C++ 预处理器具有类似功能。
类型转换: C++ 中有数据类型隐含转换的机制, Java 中需要限时强制类型转换。
字符串: C++中字符串是以 Null 终⽌符代表字符串的结束,⽽ Java 的字符串 是⽤类对象 (string 和 stringBuffer)来实现的。 Java 中不提供 goto 语句,虽然指定 goto 作为关键字,但不⽀持它的使⽤,使程序简洁易 读。
Java 的异常机制⽤于捕获例外事件,增强系统容错能⼒。
Last updated