A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄新 中级黑马   /  2012-12-12 11:32  /  2958 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  在类中声明一个变量或方法实例化这个类的对象的时候也为声明的变量或方法分配了内存空间。定义和声明的区别就在于有没有为变量赋具体的数值和方法写具体的代码 。这样理解对不对。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

4 个回复

正序浏览
变量的声明有两种情况:
1、一种是需要建立存储空间的。例如:int x在声明的时候就已经建立了存储空间。

2、另一种是不需要建立存储空间的。比如上面的同学说的extern int x;
前者是“定义性声明”或者称为“定义”,而后者是“引用性声明”,从广义的角度来讲声明中包含着定义,即定义是声明的一个特例,所以并非所有的声明都是定义。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
一般解释来说:声明是告诉编译器存在这么一个标识符。定义则是为程序申请一块内存。
例如:

int x; //这是一个定义   
extern int x; //这是声明   
int x = 10; //这也是一个定义  

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 rla540 于 2012-12-12 14:57 编辑

声明:就是事先声明这个变量名我已经准备使用了,别人不能再用了(在同一个作用域),而没有在内存中为其分配空间
定义:就是为变量分配存储空间;

两个区别就是看有没有在内存中分配空间;
如: 你创建了一个Person类
Person ZhanSan;//此时是声明,还没有在堆中分配空间,这句话告诉编译器,这个名字已经被占用了,不能再给别人了!虽然这个人还没出生。就像先给孩子想好名字,而小孩还没出生
ZhanSan = new Person();//定义,此时已经在堆中划分了空间 ,

Person LiSi = new Person();//声明并定义, 小孩子出生了并起了个名字来标识他

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
我觉得应该可以这么理解吧。定义一个方法就是为了重复的使用,然后你调用的时候有的是有返回值和参数的,你就得把参数填好,这参数就是你定义的变量。这就跟你新定义一个变量在使用是一个道理吧。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马