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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭繁森 黑马帝   /  2011-12-20 14:37  /  3105 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 guofansen 于 2011-12-20 20:46 编辑

class person
{
    private String name;
     private int  age;
     person (String name)
     {
            name= name;
     }
代码只贴这么多,想简要问下第一个name(毕老师说是成员变量) 和 局部变量 name(String后的name)各自的特点

点评

你应该写 this.name = name; name = name 是自己调自己。  发表于 2011-12-20 15:41

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

10 个回复

倒序浏览
成员变量就是某个类的对象所具有的属性,而局部变量是某个方法内临时定义的变量,它的生命周期随着方法执行结束而结束。但是成员变量要等到对象销毁才会销毁。


就是这么简单,

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 为梦而战 于 2011-12-20 14:45 编辑

成员变量:private String name;
               private int age;
是Person类的对象所具有的属性
局部变量:    Person(String name){…}中的name;
是Person(String name){…}构造方法内临时定义的变量,它的生命周期随着方法执行结束而结束。但是成员变量要等到对象销毁才会销毁。

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
我是这么理解你的问题的
第一个name是成员变量,简单的理解,如果你下面还有其它类的话,就不用在声明name了,而第二个name如果你之前没定义成员变量的name,程序会报错的。
回复 使用道具 举报
宋双 黑马帝 2011-12-20 14:50:35
报纸
成员变量从属与对象的

局部变量定义在函数体内。作用域在函数体内有效,就是在函数的大括号内有效

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
舒远 黑马帝 2011-12-20 14:56:32
地板
person (String name)
     {
            name= name;
     }
这么写是个毫无意义的代码,你把变量的值赋给变量自己?没意义的呀。应该是
person (String name)
     {
            this.name= name;
     }
这是将局部变量的值赋给成员变量。虽然名称相同但是意义完全不一样。
成员变量的生命周期是跟随对象的。而局部变量的生命周期只是方法被调用时才存在。
另外他们的访问范围也不一样。局部变量只能在方法内部被访问,成员变量在类的内部都可以被访问。

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
成员变量是某个类所具有的属性。
局部变量是某个方法中定义的临时变量。该方法执行完毕后,该局部变量就不存在了。

评分

参与人数 1技术分 +1 收起 理由
吴上储 + 1

查看全部评分

回复 使用道具 举报
应国炎 黑马帝 2011-12-20 15:34:42
8#
成员变量在堆内存中,随着对象的加载而加载.

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

不知道我说清楚没,反正我是这么理解的,如果什么地方说的不对,欢迎各位同学指正

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
其实成员变量和局部变量在代码编写时可直观理解为:
方法里定义的就是局部变量,类里定义的就是成员变量。成员变量会默认初始化,局部变量必须显式初始化

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
既然大家回答的都差不多了,我就说说其他的吧,其实变量的作用域也就是这个变量所包围的{},只要这个变量出了{},变量就不能再被使用。成员变量你可以不用初始化,虚拟机会给成员变量赋值为其相应的默认值,而局部变量就必须要被赋值后才能被使用。还用就是你的代码中的String name局部标量中的name会将成员变量name个屏蔽掉,所以需要调用成员变量时需借助this,this就是对象对自己的调用。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

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