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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© a569609054 初级黑马   /  2014-3-19 18:21  /  1564 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 a569609054 于 2014-3-20 11:37 编辑

局部变量和成员变量有什么区别?  怎么知道什么时候定义哪一种变量呢?

10 个回复

倒序浏览
局部变量和成员变量主要是他们作用域的区别,成员变量个是类内部;局部变量是定义其的方法体内部(或者方法体内部的某一程序块内——大括号,主要看定义的位置)。另外,成员变量可以不显式初始化,它们可以由系统设定默认值;局部变量没有默认值,所以必须设定初始赋值。还有,在内存中的位置也不一样。成员变量在所在类被实例化后,存在堆内存中;局部变量在所在方法调用时,存在栈内存空间中。

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报 1 0
局部变量就是定义在函数内部,我们称他为局部变量。再者就是定义在类中,方法外的的变量或者说是常量我们形象的称它为全局变量。其实java中是没有全局变量这一说法的,只不过我们沿袭了c语言的说法,这些知道就行了。局部变量定义在函数上就表示作用域就在函数内,如果是定义在某个循环体中那么它的作用域就是这个循环体,全局变量作用域是整个类,还有就是局部屏蔽全局
回复 使用道具 举报
在Java中是存在全局变量的,比如
public static final int a=0;
这种情况我们是可以称之为全局变量的
回复 使用道具 举报
局部变量,在方法内部声明,当该方法运行完时,内存即被释放。
成员变量,只要该对象还在,哪怕某一个方法运行完了,还是存在。
从系统的角度来说,声明局部变量有利于内存空间的更高效利用(方法运行完即回收)。
成员变量可用于各个方法间进行数据共享。
回复 使用道具 举报
成员变量供整个类所使用,而成员变量只供某个方法使用。比如说 for(int i ; i<100;i++)这里的i就是局部变量
回复 使用道具 举报
蓝枫 中级黑马 2014-3-19 19:35:57
7#
(1)作用范围不同:成员变量作用于整个类中;局部变量作用于函数中,或者语句中
(2)在内存中的位置不同:成员变量存在于堆内存中,因为对象的存在才在内存中存在;局部变量存在于栈内存中。

回复 使用道具 举报
我觉得最需要记住的,比较容易忽略的细节就是:
成员变量有默认值!!!

其他还有一些区别的地方:
1.成员变量可以被public,protect,private,static等修饰符修饰,
而局部变量不能被控制修饰符及static修饰;两者都可以定义成final型
2.成员变量存储在堆,局部变量存储在栈
3.存在时间不同

至于说什么时候用哪一种,其实需要根据实际程序开发来决定。
成员变量最常见的就是javabean里面的属性吧?
定义一个班级的类,然后定义对应的属性,这些属性就是它的成员变量了。
一个班级,叫什么?多少人?所属年纪?
class MyClass{
String ClassName;
int StudentNums;
……
}

局部变量用在方法内部啊,方法的形参啊之类的比较多,
调用这个方法时,传值给这个形参,最后返回结果,
就是局部变量在发挥作用。
回复 使用道具 举报
在类中定义的就是成员变量,在方法中定义的就是局部变量
回复 使用道具 举报
在方法中定义的就是局部变量,在类中定义的就是成员变量,局部变量必须赋初始值,成员变量系统会自动赋给初始值,不过还是推荐自己赋值
回复 使用道具 举报
最简单的判断它们的区别就是看它是在哪里声明。类里面就是成员变量,函数里面就是局部变量,它们的作用域不同。当你觉得这个变量其他地方也要用到时,就声明成成员变量,当你觉得这个变量只在函数里用那么一下下,就声明成局部变量,这样节省内存。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马