[C++ Basic]C++与Java的主要区别

1.编译运行

  java是解释性语言,java程序在运行时类加载器从类路经中加载相关的类,然后java虚拟机读取该类文件的字节,执行相应操作.而C++编译的 时候将程序编译成本地机器码.一般来说java程序执行速度要比C++慢10-30倍.即使采用just-in-time compiling (读取类文件字节后,编译成本地机器码)技术,速度也要比C++慢好多.

2.内存管理

java的垃圾自动回收机制较C++由程序员管理内存效率更低

3.语法区别:

  • 数据类型

java中的原始数据类型在每个操作系统平台长度都是相同,而C++这些数据类型长度是随操作系统的不同而不同,所以java在不同操作系统上执行时有个转化过程。在c和c++中有时出现数据类型的隐含转换,这就涉及了自动强制类型转换问题。例如,在c++中可将一浮点值赋予整型变量,并去掉其尾数。Java不支持c++中的自动强制类型转换,如果需要,必须由程序显式进行强制类型转换。

  • 指针摒弃

JAVA语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说JAVA没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于Java程序的安全。

  • 操作符

  Java不支持操作符重载。操作符重载被认为是c++的突出特征。

  • 函数调用

  Java没有函数,作为一个比c++更纯的面向对象的语言,Java强迫开发人员把所有例行程序包括在类中。同时,java中所有的对象都创建在堆中,没有对象被创建在stack中,而C++的函数入口地址、局部变量和临时对象是创建在stack中的。

  • 类运用

Java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。 Java 里对象不是值,所有的对象都通过引用来访问,"." 操作符是将一个对象的引用作为左操作参数来访问这个对象的成员.在C++中和这种做法等价的是 "->"。Java还取消了c/c++中的结构和联合。C++ 方法可以声明为虚函数, 虚函数是在运行期根据对象的类型才确定的. C++ 方法缺省情况下不是虚的. 在 Java 里, 方法缺省情况下是虚的, 但可以使用final关键字使之声明为非虚的。

参考:维基百科http://zh.wikipedia.org/wiki/%E6%AF%94%E8%BE%83Java%E5%92%8CC%2B%2B

享受HelloWorld带来的思考盛宴
原文地址:https://www.cnblogs.com/colin-chan/p/3573419.html