毕业之后一直做Java应用,很少接触C++的使用,所以对C++忘得很多了,但还是觉得C++在某些方面是不可替代的,最近又翻了一下C++的书,总结了一些C++和Java不同的地方罗列下面,个人理解,必有不是和遗漏之处,如发现请帮忙指出以改正
区别概述
|
Java
|
C++
|
面向对象特性
|
一切皆是对象,在Java中所有东西都在类中定义,没有全局变量和方法,没有联合枚举
|
面向对象和面向过程的并集,其程序可以含有非类属性和方法构造
|
继承体系的
|
单根继承模式,所有类都是Object的子类
|
类型间没有统一的祖先类
|
文件类型
|
所有类型文件均是.java类型文件,没有头文件。在Java中通过interface及implements完成接口及实现,并通过import引入需要的类
|
分为头文件,实现文件 C++中没有语法意义上的interface,而是用头文件收集对外提供的定义和声明,使用者再通过#include进行引入
|
操作符重载
|
java不支持操作符重载
|
C++支持操作符重载
|
运行环境
|
在java虚拟机上运行
|
直接在os上运行
|
继承
|
不支持多重继承
|
支持多重继承
|
程序入口方法
|
每个类都可以有main方法
|
只有一个全局main方法
|
多态
|
所有函数都是虚函数,不需要额外声明,在调用时自动进行动态绑定
|
需要用virtual声明类层次中的函数为虚函数
|
声明
|
没有方法和类声明,表示接口或实现不确定的可以用interface或抽象方法方式
|
必须先声明后使用,通常把声明放入头文件
|
资源导入
|
用"import 全包.类名"引入
|
用预编译"#inlude 头文件"引入
|
运算符
|
没有双字节运算符,因为所有对象都为引用方式,所以不区分对象绑定和指针间访操作
|
含有空间域操作符"::"和指针间访操作符"->"
|
基本类型
|
空间大小固定,char类型使用16位的Unicode表示,boolean和int不可自由转换
|
与平台相关
|
对象创建
|
对于所有不属于基本类型的对象,都只能通过new命令在堆中创建,但是不需要显式释放,GC可以自动完成垃圾收集
|
可以通过定义在堆栈中创建,在堆栈中创建的对象本体不需要显示释放;通过new创建的在堆中的对象,需要显式释放
|
命名空间
|
用包代替命名空间
|
|
分享到:
相关推荐
2.Java语言的8大特点 3.关于 JVM JDK 和 JRE 最详细通俗的解答 什么是字节码?采用字节码的好处是什么? Java 程序从源代码到运行的3大步骤 JDK 和 JRE 4. Oracle JDK 和 OpenJDK 的对比 5.Java 和 C++的区别 6.什么是...
2.2 C++与Java的对比综述 60 2.3 C++与Java的开发工具与开发过程 67 2.3.1 C++的基本开发工具与开发过程 67 2.3.2 Visual C++的开发平台与开发过程 70 2.3.3 Java的基本开发工具与开发过程 72 2.3.4 Java的三...
它支持众多语言和平台,包括主流的.NET、Java、PHP、Python、Ruby、JavaScript、ActionScript、Delphi、FreePascal、Objective-C、ASP、Perl、C++等。通过Hprose可以在这些支持的语言之间实现方便且高效的互通,能够...
面对汹涌而来的Visual C++,Visual Basic,PowerBuilder和Java等各个领域的猛将,从DOS时代“为所欲为”的“系统警察”岗位下岗,在其他领域又没有一技之长,汇编语言似乎失去了生存的意义,有很多人在DOS转向...
一个很全很详细的tinyos编程外文教程,将nesc与其他语言如C,C++,JAVA做了对比,讲述起不同与特殊点,鞭辟入里,适合初学者使用。
这个强大而灵活的平台,可以让您创建批处理、自定义菜单、添加自己的算法和工具,甚至将C++和Java代码集成到您的工具中等。 自2007年起,与著名的GIS厂商ESRI公司开展全面战略合作,ENVI Reader for ArcGIS模块让...
在大部分系统语言中,比如 C 和 C++,您必须进行内存管理。本文将介绍手工的、半手工的以及自动的内存管理实践的基本概念。 追溯到在 Apple II 上进行汇编语言编程的时代,那时内存管理还不是个大问题。您实际上在...
支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。 使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...