黑马程序员技术交流社区

标题: 关于局部和成员的概念有些混淆了 [打印本页]

作者: yhnan    时间: 2013-3-13 18:28
标题: 关于局部和成员的概念有些混淆了
本帖最后由 易贺男 于 2013-3-13 22:48 编辑

就是视频上老师经常说局部变量和成员变量 ,局部方法和成员方法老是分不清楚。请问局部和成员怎么定义的?
作者: wanggang    时间: 2013-3-13 19:09
局部变量 一般是在方法里定义的,而成员变量 是在类里方法外定义的,例如:
class aa{
int 成员变量;
public void bb(int 局部变量)
{
    String 局部变量;
}
}
作者: 黑马-郑玉元    时间: 2013-3-13 19:15
成员变量是定义在类中,局部变量定义在方法里或者一些流程控制语句中。
区别在于:
1.作用范围:  成员变量在整个类内有效 ,而局部变量只在其方法内或流程语句中有效
2.初始值:  成员变量如果没有对其进行初始化,会对其进行默认初始化。
               局部变量必须初始化才能使用。
3.生命周期: 成员变量生命周期是与对象的生命周其一致  局部变量使用完成后就消失。
4.创建的位置 :成员变量在堆内存中   局部变量在栈内存中。
作者: 赵亚威    时间: 2013-3-13 19:18
局部变量只能用在局部 一般都在方法中定义 内部类除外 ;成员变量即全局变量 整个类中都可以使用 局部方法是相对的 比如在入口的外面定义一个方法(非静态也不是构造方法)那么可以叫做局部方法 像有static修饰的方法 可以叫做成员方法 整个类都能使用。
作者: 罗威    时间: 2013-3-13 22:09
   成员变量,全局变量,定义在类中变量
  局部变量,定义在函数中,或者语句中

  成员变量和局部变量的可以用以下几点区别
  作用范围:
   成员变量,作用在整个类中,
   局部变量,只作用在函数定义的大括号中

  存储位置:
   成员变量是跟随对象,在堆内存中存储
   局部变量,存储在栈内存中
  
  初始化值
   成员变量都有默认的初始化值
   局部变量,需要手动的赋值

调用方式的不同
   非静态成员变量,只能被对象调用
   局部变量,是函数运行,他就运行了

生命周期
   非静态成员变量,随着对象的消失而消失
   局部变量,只要语句或者函数结束,局部变量就消失了

当然,如果是静态的,那么他就是随着类的加载就已经加载到了相应的内存区域了
一般来说,能不定义为静态的就不定义为静态的,因为静态的生命周期太长,比较占用资源!
作者: 陈丽莉    时间: 2013-3-13 22:36
若仍有问题,请继续追问;若没有问题了,请将帖子分类改成【已解决】~
作者: 唐永康    时间: 2013-3-13 22:49
就是视频上老师经常说局部变量和成员变量 ,局部方法和成员方法老是分不清楚。请问局部和成员怎么定义的?


用一个实际的例子你就明白了。

一个类里面的成员方法与成员变量。
class Test
{
     int x ;//这里的x就是成员变量了。成员变量不需要初始赋值
     void  method()//这里的方法method其实就是成员方法。
    {
             int y = 0;//这里的y就是局部变量,必须要赋初始值。
                     y的作用范围只能是在method方法之内有用,所以叫做局部,而x不同,因为x变量的作用范围
                     是整个类。与method方法处于同级地位,也叫成员变量。
    }
}

至于你说的局部方法和成员方法我没有听说过,方法本来就是属于成员,方法里面可以调用方法,但
不能再定义方法了,所以说,据我所知,根本不存在局部方法这么一说,如果非得这么说,那就是在内部类里面
可以有局部方法,当然这里相对于外部类也算得上是局部方法。

总之类包括成员,成员包括局部。就是这么一个包含的关系。这样理解起来更容易些。






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