黑马程序员技术交流社区

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

作者: 郭繁森    时间: 2011-12-20 14:37
标题: 局部变量和成员变量的小问题
本帖最后由 guofansen 于 2011-12-20 20:46 编辑

class person
{
    private String name;
     private int  age;
     person (String name)
     {
            name= name;
     }
代码只贴这么多,想简要问下第一个name(毕老师说是成员变量) 和 局部变量 name(String后的name)各自的特点
作者: 房宝彬    时间: 2011-12-20 14:39
成员变量就是某个类的对象所具有的属性,而局部变量是某个方法内临时定义的变量,它的生命周期随着方法执行结束而结束。但是成员变量要等到对象销毁才会销毁。


就是这么简单,
作者: 为梦而战    时间: 2011-12-20 14:43
本帖最后由 为梦而战 于 2011-12-20 14:45 编辑

成员变量:private String name;
               private int age;
是Person类的对象所具有的属性
局部变量:    Person(String name){…}中的name;
是Person(String name){…}构造方法内临时定义的变量,它的生命周期随着方法执行结束而结束。但是成员变量要等到对象销毁才会销毁。
作者: 冯瑞君老师    时间: 2011-12-20 14:48
我是这么理解你的问题的
第一个name是成员变量,简单的理解,如果你下面还有其它类的话,就不用在声明name了,而第二个name如果你之前没定义成员变量的name,程序会报错的。
作者: 宋双    时间: 2011-12-20 14:50
成员变量从属与对象的

局部变量定义在函数体内。作用域在函数体内有效,就是在函数的大括号内有效
作者: 舒远    时间: 2011-12-20 14:56
person (String name)
     {
            name= name;
     }
这么写是个毫无意义的代码,你把变量的值赋给变量自己?没意义的呀。应该是
person (String name)
     {
            this.name= name;
     }
这是将局部变量的值赋给成员变量。虽然名称相同但是意义完全不一样。
成员变量的生命周期是跟随对象的。而局部变量的生命周期只是方法被调用时才存在。
另外他们的访问范围也不一样。局部变量只能在方法内部被访问,成员变量在类的内部都可以被访问。
作者: 海中的游弋草    时间: 2011-12-20 15:20
成员变量是某个类所具有的属性。
局部变量是某个方法中定义的临时变量。该方法执行完毕后,该局部变量就不存在了。
作者: 应国炎    时间: 2011-12-20 15:34
成员变量在堆内存中,随着对象的加载而加载.

局部变量在栈内存中,引用时则存在,引用结束则释放内存,所以时间很短
作者: 张帅    时间: 2011-12-20 15:40
这个首先啊
   1、 成员变量,局部变量
        (1)、作用范围:成员变量作用于整个类中,局部变量作用于函数中,或者语句中
         (2)、在内存中的位置:成员变量在堆内存中,因为对象的存在,才在内存中存在。局部变量存在于栈内存中
  所以很明显,当方法块中出现和类成员同名的变量时,首先会使用局部变量,貌似叫 就进原则 吧,所以要使用类的成员变量,要使用对象访问,恰好,this 代表本来的对象,代表它所在函数对象的引用。简单说哪个对象在调用 this 所在的函数,this就代表哪个对象。因此, 格式为 :  this.变量名。

不知道我说清楚没,反正我是这么理解的,如果什么地方说的不对,欢迎各位同学指正
作者: 黑马巩伟伟    时间: 2011-12-20 18:06
其实成员变量和局部变量在代码编写时可直观理解为:
方法里定义的就是局部变量,类里定义的就是成员变量。成员变量会默认初始化,局部变量必须显式初始化
作者: hello world    时间: 2011-12-20 19:41
既然大家回答的都差不多了,我就说说其他的吧,其实变量的作用域也就是这个变量所包围的{},只要这个变量出了{},变量就不能再被使用。成员变量你可以不用初始化,虚拟机会给成员变量赋值为其相应的默认值,而局部变量就必须要被赋值后才能被使用。还用就是你的代码中的String name局部标量中的name会将成员变量name个屏蔽掉,所以需要调用成员变量时需借助this,this就是对象对自己的调用。




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