业精于勤,荒于嬉
全部博文(763)
分类: Java
2010-02-21 18:19:29
Java 和 c++ 的区别对比
1> java 中不会涉及到内存管理方面的操作。 C++ 中需要我们自己动态的申请和释放内存。
在 C++ 中:
Map map; // 表示定义了一个 map 类的对象,会在栈上为 map 对象分配内存空间。会调用类的默认构造函数进行初始化。
在 java 中:
// 表示定义了一个 map 的引用,没有分配内存空间。如下所示
Map map ;
Map map = null; // 两种写法的作用是一样的, 规范代码建议写成这种方式。
在 C++ 中:
Map* pmap = new Map(); // 表示自己动态的生成一个 Map 类的对象。会在堆上为 Map 对象分配内存空间,并调用默认的构造函数进行初始化。以后通过 pmap 指针来操作内存中Map 实例对象的数据和调用相关的方法。 注意 pmap 为 Map 类的一个指针,占 4个字节。
如果不再使用 pmap 指针 的时候,需要自己显示的释放内存空间。否则会造成内存泄露,如下所示:
delete pmap;
pmap = NULL;
一般情况下, C++ 中的 new 操作的个数要和 delete 操作 的个数相对应,防止内存泄露的出现。
在 java 中:
Map map = new Map(); // 表示声明了一个 Map 对象的引用,并且为改引用指定了了一个实例对象。 在这里我们不用考虑内存的问题。Java 虚拟机会帮助我们自动的管理内存。
如果不再使用 map 对象的时候,直接将 map 赋值位 null 就可以了。Java 虚拟机会知道改如何释放内存,如下:
map = null;
(Java 中不用考虑内存的释放问题。确实很爽呀,但是最好自己心里要清楚,这过程实际发生了那些事情。。)
2> C++中到处都在使用指针,但java 中没有指针的概念。 其实,我们可以用指针的思路去理解 java 中的对象引用,在怎么说, java 也是从 C++演化而来的,用 C++ 的设计思想去理解 Java 中的知识,应该不会太难。
3> C++ 中,类的定义和实现部分一片时分开写的。C++ 的代码分为类的定义部分和类的实现部分。
Java 中类的定义和实现都写在一起了。
4> C++ 中的类分构造函数和析构函数。 Java 中的类只有构造函数。好像不存在析构函数的概念。
5> C++ 可以同时从多个类进行继承。 Java 中只能从一个类进行继承。但是可以同时实现多个接口。
6> java 中对象直接进行赋值操作时,都是 引用传递。这个需要注意一下。
更新中。。。。