黑马程序员技术交流社区
标题:
局部变量和成员变量的小问题
[打印本页]
作者:
郭繁森
时间:
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