JavaC++的比较
:javac++都是非常流行的计算机编程语言,java作为c++衍生出来的一种优秀的语言,c++有很多相似的地方,但仍然存在一些显著的差异,文章比较了这两种语言的主要差别,把握住两种语言的差别,对于我们学习能起到事半功倍的作用。
关键词:jvm 指针 模板 虚函数
c++语言在c语言的基础上加入了面向对象的元素,c++语言基础上又衍生出javajava语言借鉴了c++很多成功的经验,同时又摒弃了c++语言的一些“不足”。
1.java编译成字节码,java虚拟机(jvm)负责解释执行,这就使得java运行具有跨平台性,同时也降低了执行速度;c++直接编译成可执行代码,因此c++的执行速度比较快,但其跨平台性低于java
2.c++想比较,java语言放弃了指针,使用了垃圾回收机制,很好地避免了在c++语言中由于指针使用不当造成的程序崩溃和内存泄露,增加了安全性能。
指针是cc++语言编程中最重要的概念之一,也是最容易产生困惑并导致程序出错的问题之一。利用指针编程可以表示各种数据结构,通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯;并能像汇编语言一样处理内存地址,可以有效地对变量进行底层操作,直接操作变量的地址。非常方便好用,使代码变得更简洁。从而编出精练而高效的程序。指针极大地丰富了cc++语言的功能。但是指针也带来了很多问题,例如不正确地使用会导致错误甚至整个应用程序崩溃,同时指针带来了很多的安全隐患,它也是令很多初学者头痛的难题。java语言明确说明取消了指针。
3.c++允许多重继承,java则只能单继承,java要实现多继承,只有借助与接口。
4.java不支持操作符重载。操作符重载被认为是c++的突出特征。java语言不支持操作符重载是为了保持java语言尽可能简单。
5.自动内存管理java中所有的对象都是用new操作符建立在内存堆栈上,这个操作符类似于c++new操作符。下面的语句由一个建立了一个类read的对象,然后调用该对象的work方法:read r=new read(); r.work();语句read r=new read();在堆栈结构上建立了一个read的实例。java自动进行无用内存回收操作,不需要进行删除。而c++中必须释放内存资源,增加了设
计者的负担。java中当一个对象不被再用到时,无用内存回收器将给它加上标签以示删除。java里无用内存回收是以线程方式在后台运行的,利用空闲时间工作。
6.模板。模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数,从而实现了真正的代码可重用性。java范型非常类似模板,泛型本质上是提供类型的“类型参数”,它们也被称为参数化类型(parameterized type)或参量多态(parametric polymorphism)。其实泛型思想并不是 java 最先引入的,c++ 中的模板就是一个运用泛型的例子。gj (generic java)是对 java 语言的一种扩展,是一种带有参数化类型的 java 语言。用 gj 编写的程序看起来和普通的 java 程序基本相同,只不过多了一些参数化的类型同时少了一些类型转换。实际上,这些 gj java重载程序也是首先被转化成一般的不带泛型的 java 程序后再进行处理的,编译器自动完成了从 generic java 到普通 java 的翻译。 gj 程序的语法在表面上与 c++ 中的模板非常类似,但是二者之间有着本质的区别。 首先,java 语言中的泛型不能接受基本类型作为类型参数,它只能接受引用类型。这意味着可以定义 list,但是不可以定义 list。其 , c++ 模板中,编译器使用提供的类型参数来扩充模板,因此, list 生成的 c++ 代码不同于 list 生成的代码,list list 实际上是两个不同的类型。而 java 中的泛型则以不同的方式实现,编译器仅仅对这些类型参数进行擦除和替换。类型 arraylist arraylist 的对象共享相同的类型,
且只存在一个 arraylist 类。
7.虚函数。在c++,虚函数是在类中被声明为virtual的成员函数,当编译器看到通过指针或引用此类函数时,对其执行晚绑定,即通过指针(或引用)指向的类型信息来决定该函数是哪个类的。通常此类指针或引用都声明为基类的,它可以指向基类或派生类的对象。多态指同一个方法根据其所属的不同对象可以有不同的行为。而在java中所有的函数都默认为虚函数,其自动实现了虚函数的机制,这是较c++进步的地方。
8.java是纯面向对象的语言,c++则不同。java作为纯面向对象的语言,很好的体现了面向对象编程的思想;c++作为c语言的“超集”,保留了c语言的结构化编程,加入了面向对象的编程部分。所以c++不是“纯”的面向对象的语言,它是面向结构和面向对象混合的语言。
总之,java衍生于c++,它们语法上有很多相似的地方,但是java也在上述几个地方与c++有重大区别,在学习javac++,把握住它们的联系和差别,可以起到事半功倍的效果。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。