因为即会C++又懂点Java的缘故,就朋友的邀请,共同合作一个项目——“把一个Java工程的项目转成C++”。这个项目前前后后历时约两周,采了不少坑……现把Java和C++的主要区别总结一个,从中吸取教训。
#1.定义变量和数组时,Java默认初始化,C++不初始化;
1.类中,方法中定义变量、动态数组时,Java默认初始化,C++不初始化;
如下Java代码
public class Test { public void testValue() { int arr[] = new int[4]; System.out.println("int value: " + iValue); System.out.println("float value:" + fValue); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + "/t"); } } private int iValue; private int fValue; }
结果如下:
int value: 0
float value:0
0 0 0 0
如下C++代码:
结果如下:
int Value: -858993460
float Value: -858993460
-858993460 -858993460 -858993460 -858993460
因为变量未进行初始化,结果是一个任意的值,这将是非常危险的。
#2.Java中有垃圾回收机制,C++没有。Java中new对象后不用管,不用考虑释放;C++中new了对象可分配内存后一定要记得释放,不然就会内存泄漏;要使C++创建对象自行释放,要自己实现一套引用计数的机制。
#3.Java中只有引用,没有指针;C++中有引用,也有指针。
Java可读性好,更安全;C++更难懂,但更灵活(特别是算法的一些操作时)。
#4.在定义类的成员时,Java可以赋初值,C++不可以
#5.函数的参数,C++可以有默认形参,Java不可以
#6.Java中用final修饰不改变的成员,C++用const修饰不可改变的变量