C++和Java动态数组比较

来源:互联网 发布:txt转azw3软件 编辑:程序博客网 时间:2024/04/30 19:02
在C++和Java中经常要动态数组,下面我们看看两个的区别和联系。

我们知道Java中的引用和C++的中的指针很像,那么我们将在下面的代码中展示它们。


C++代码
#include <vld.h>#include <iostream>using namespace std;class UniArray{public:UniArray(int length){cout << "malloc memory" << endl;this->length = length;elem = new int[length];}virtual ~UniArray(){delete[] elem;}private:int length;int* elem;};class TwoDimArray{public:TwoDimArray(int x, int y){xLength = x;yLength = y;pArray = new int * [xLength];for (int i = 0; i < xLength ; i++){pArray[i] = new int [yLength];}}virtual ~TwoDimArray(){for (int i = 0 ; i < xLength ; i++){delete[] pArray[i];}delete pArray;}private:int xLength;int yLength;int** pArray;};int main(){TwoDimArray(5, 5);UniArray array(5);return 0;}


Java代码

public class ArrayTest {public static void main(String[] args){for(int i = 0 ; i < 10 ; i++){System.out.println(i);UniArray uniArray = new UniArray(6);uniArray = null;System.gc();}for(int i = 0 ; i < 10 ; i++){System.out.println(i);TwoDiArray twoDiArray = new TwoDiArray(5, 5);twoDiArray = null;System.gc();}System.gc();}static class UniArray{public UniArray(int length){pArray = new int[length];}protected void finalize(){System.out.println("UniArray Garbage Collection");}private int[] pArray; }static class TwoDiArray{public TwoDiArray(int x,int y){pArray = new int[x][];for(int i = 0 ; i < x ; i++){pArray[i] = new int[y];}}protected void finalize(){System.out.println("TwoDiArray Garbage Collection");}private int[][] pArray;}}


我们经过比较发现:

C++中的int * 语义上等价于Java中的int[]

C++中的int ** 语义上等价于Java中的int[][];

两者的申请过程是非常的相似的。

原创粉丝点击