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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM周一帆 中级黑马   /  2013-3-25 20:54  /  1199 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ivan5544 于 2013-3-25 21:18 编辑

成员变量和局部变量差异

点评

如果你的问题已经得到解决,请及时将主题改为[已解决],如果还有问题请继续追问,谢谢!  发表于 2013-3-25 21:14

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

5 个回复

倒序浏览
关键是他们的作用域,生命周期的差别
局部变量主要定义在方法体内比如:
for(int i=0;i<arr.length;i++)
这是我们经常用的,int i是局部变量,它的作用域只在这个for变量中,除了这个变量就不能用了

成员变量时定义在类中的,它在整个类中都可以调用。
局部变量在定义时必须要先赋值,而成员变量可以不用赋值。
局部变量是存储在栈内存中,用完就清理,而成员变量是在堆内存中开辟一块空间。

成员变量可以被public static private修饰符修饰。

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
成员变量,就是你对象的属性,是在你对象建立的时候在会存在,会随着对象的消失而消失(但是 静态成员变量不同),
静态成员变量是随着类的加载而被加载进行入内存。也是该内的所有实例对象共有的。也就是说,都可以访问,都可以改变它。
其中静态成员变量可以直接用(类名.静态成员)的形式调用,生命周期较长。
局部变量可定义在方法中,也可以在方法的参数列表中,它是在调用这个方法的时候才在内存中去开辟空间。方法调用结束,就会被垃圾回收,生命周期短。

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
成员变量定义在类中,在整个类中都可以被访问,随着对象的建立而建立,存在于对象所在的堆内存中,而且成员变量有默认初始化值。非静态成员变量只能被对象调用,随着对象的消失而消失。
局部变量只定义在局部范围内,如:函数内,语句内等;局部变量存在于栈内存中,没有默认初始化值,需要手动赋值,只要语句或函数结束局部变量就消失。

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
主要是它们的生命周期不同
局部变量 生命周期较短 ,某一方法内部的或是某些语句块中的局部变量使用完了,占用的内存就会被释放
回复 使用道具 举报
本帖最后由 郑元皓 于 2013-3-25 21:15 编辑

1:成员变量直接定义在类中。
   局部变量定义在方法中,参数上,语句中。
2:成员变量在这个类中有效。
局部变量只在自己所属的大括号内有效,大括号结束,局部变量失去作用域。
3:成员变量存在于堆内存中,随着对象的产生而存在,消失而消失。
局部变量存在于栈内存中,随着所属区域的运行而存在,结束而释放。

这是老师中的总结,我觉得简单易懂。希望可以帮助到你

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

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