Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5404996
  • 博文数量: 763
  • 博客积分: 12108
  • 博客等级: 上将
  • 技术积分: 15717
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-28 21:21
个人简介

业精于勤,荒于嬉

文章分类

全部博文(763)

文章存档

2018年(6)

2017年(15)

2016年(2)

2015年(31)

2014年(14)

2013年(87)

2012年(75)

2011年(94)

2010年(190)

2009年(38)

2008年(183)

2007年(28)

分类: 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 中对象直接进行赋值操作时,都是 引用传递。这个需要注意一下。

 

 

更新中。。。。

阅读(1374) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~