黑马程序员技术交流社区

标题: 局部变量和成员变量 [打印本页]

作者: a569609054    时间: 2014-3-19 18:21
标题: 局部变量和成员变量
本帖最后由 a569609054 于 2014-3-20 11:37 编辑

局部变量和成员变量有什么区别?  怎么知道什么时候定义哪一种变量呢?
作者: sgs_gzy    时间: 2014-3-19 18:30
局部变量和成员变量主要是他们作用域的区别,成员变量个是类内部;局部变量是定义其的方法体内部(或者方法体内部的某一程序块内——大括号,主要看定义的位置)。另外,成员变量可以不显式初始化,它们可以由系统设定默认值;局部变量没有默认值,所以必须设定初始赋值。还有,在内存中的位置也不一样。成员变量在所在类被实例化后,存在堆内存中;局部变量在所在方法调用时,存在栈内存空间中。
作者: 李猛    时间: 2014-3-19 18:34
局部变量就是定义在函数内部,我们称他为局部变量。再者就是定义在类中,方法外的的变量或者说是常量我们形象的称它为全局变量。其实java中是没有全局变量这一说法的,只不过我们沿袭了c语言的说法,这些知道就行了。局部变量定义在函数上就表示作用域就在函数内,如果是定义在某个循环体中那么它的作用域就是这个循环体,全局变量作用域是整个类,还有就是局部屏蔽全局
作者: love~陌    时间: 2014-3-19 18:40
在Java中是存在全局变量的,比如
public static final int a=0;
这种情况我们是可以称之为全局变量的
作者: 朱长水    时间: 2014-3-19 19:10
局部变量,在方法内部声明,当该方法运行完时,内存即被释放。
成员变量,只要该对象还在,哪怕某一个方法运行完了,还是存在。
从系统的角度来说,声明局部变量有利于内存空间的更高效利用(方法运行完即回收)。
成员变量可用于各个方法间进行数据共享。
作者: 透过生活    时间: 2014-3-19 19:32
成员变量供整个类所使用,而成员变量只供某个方法使用。比如说 for(int i ; i<100;i++)这里的i就是局部变量
作者: 蓝枫    时间: 2014-3-19 19:35
(1)作用范围不同:成员变量作用于整个类中;局部变量作用于函数中,或者语句中
(2)在内存中的位置不同:成员变量存在于堆内存中,因为对象的存在才在内存中存在;局部变量存在于栈内存中。


作者: linweiwen    时间: 2014-3-19 20:28
我觉得最需要记住的,比较容易忽略的细节就是:
成员变量有默认值!!!

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

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

局部变量用在方法内部啊,方法的形参啊之类的比较多,
调用这个方法时,传值给这个形参,最后返回结果,
就是局部变量在发挥作用。
作者: 郭黎明    时间: 2014-3-19 20:50
在类中定义的就是成员变量,在方法中定义的就是局部变量
作者: 林林鸦    时间: 2014-3-19 21:17
在方法中定义的就是局部变量,在类中定义的就是成员变量,局部变量必须赋初始值,成员变量系统会自动赋给初始值,不过还是推荐自己赋值
作者: liuqufei    时间: 2014-3-20 00:31
最简单的判断它们的区别就是看它是在哪里声明。类里面就是成员变量,函数里面就是局部变量,它们的作用域不同。当你觉得这个变量其他地方也要用到时,就声明成成员变量,当你觉得这个变量只在函数里用那么一下下,就声明成局部变量,这样节省内存。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2