前言:研究生期间主要使用的是C++语言,因工作的要求,现在需要学习java语言,在学习的这段时间里,发现两种语言之间有着很多相似的地方,但又有一些区别,下面说一下java和c++中比较显著的区别,适用于有c++基础的读者。

一、在数据类型、关键字方面
1.除了c++中基本的数据类型(int、long、double、float)等之外,其余的都是和类相关的数据类型,如数组(Arrays、String)等。
2.java中没有c++中的结构和联合这两种数据结构
3.java中没有c++中的自动强制类型转换,如果需要类型转换必须进行显示的数据类型转换
4.java中没有宏定义,不用const修饰,采用final代替,可修饰类、方法、成员属性。
5.java中每种基本数据类型所占的节数相同,不因平台的不同,而所占字节数不同。但c++中64位和32位这两种平台下,有的数据类型所占字节数就不同。
6.字符串类型:C和C++不支持字符串变量,在C和C++程序中使用Null终止符代表字符串的结束,在Java中字符串是用类对象(StringBuilder和stringBuffer)来实现的,这些类对象是Java语言的核心
二、在指针方面
C++存在指针的操作,而java中没有指针的含义,只有引用。
三、在面向对象方面
1.java中没有类声明,只有类定义,并且一切皆为类,类定义采取几乎和C++一样的形式,但没有标志结束的分号。
2.java中没有虚函数、多继承,需要采用抽象类、接口等来实现类似的意义,采用Abstract修饰类,实现抽象类,并需要子类继承抽象类,并全部重写其方法。采用interface修饰类实现接口类,并定义类实现接口中全部的方法。
3.用extends表示实现抽象类或者其他类的继承,用implements关键字表示接口的继承。
4.java中存在内部类和匿名类,而c++中没有
5.没有C++中的全局变量,所有的变量、方法都在一个类中,如果想实现全局的意义,需要采用static进行修饰来实现。
6.访问限制方面:c++中只有三种访问限制符(public、protected、private),而java中多了一种default,其他三种和c++中的相同。
7.

四、在异常处理方面
采用
try{//可能产生例外的代码
}catch(exceptionType name){
//处理
}
其中exceptionType表示异常类型。而C++则没有如此方便的机制

五、集合、容器方面

C++中:

数据结构和java有关系吗 java数据结构和c++数据结构_java


JAVA容器

JAVA的容器—List,Map,Set

Collection

├List

│├LinkedList

│├ArrayList

│└Vector

│ └Stack

└Set

Map

├Hashtable

├HashMap

└WeakHashMap

数据结构和java有关系吗 java数据结构和c++数据结构_c++_02

六、内存处理方面
java采用new来为对象分配内存,并且不需要手动释放,JVM虚拟机会在一段时间后,检测长时间不使用的那块内存区域,并进行释放。而在C++中,需要手动释放new出来的内存。存在内存泄漏等缺点。
七、其他方面
1.操作符重载
Java不支持操作符重载。操作符重载被认为是C++的突出特征,在Java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。Java语言不支持操作符重载是为了保持Java语言尽可能简单
2.预处理
Java不支持预处理功能。C/C++在编译过程中都有一个预编泽阶段,即众所周知的预处理器。预处理器为开发人员提供了方便,但增加丁编译的复杂性。JAVA虚拟机没有预处理器,但它提供的引入语句(import)与C++预处理器的功能类似
3.Java中没有作用域范围运算符“::”。Java利用点号做所有的事情,但可以不用考虑它,因为只能在一个类里定义元素。即使那些方法定义,也必须在一个类的内部,所以根本没有必要指定作用域的范围。我们注意到的一项差异是对static方法的调用:使用ClassName.methodName()。除此以外,package(包)的名字是用点号建立的,并能用import关键字实现C++的“#include”的一部分功能
4. Java不存在“嵌入”(inline)方法
5. Java没有运算符重载,多态是面向对象程序设计的一个特殊特性,重载则是它的重要体现。在C++中,同时支持函数重载和运算符重载,而Java具有方法重载的能力,但不允许运算符重载。

持续补充中…,欢迎大佬们指点一二。