黑马程序员技术交流社区

标题: 关于局部变量与成员变量 [打印本页]

作者: Gump    时间: 2013-10-30 10:24
标题: 关于局部变量与成员变量
本帖最后由 Gump 于 2013-10-30 14:07 编辑

大家好,我刚开始自学java ,听毕老师的视频,听到局部变量,成员变量  ,总是会犯迷糊,希望大家可以给我一个方法,让我可以很好的区分局部变量与成员的变量,可以更好的理解 。谢谢大家!
作者: 高亮亮    时间: 2013-10-30 10:32
局部变量跟成员变量最大区别应该实在作用域吧。
成员变量是作用于整个类,而局部变量就是在声明他的那个方法或者函数内作用,就是那个{}内部。
然后,成员变量在实例化的过程中是肯定会进入对内存,在对象里生成的,而且是默认有初始化值。而局部变量就必须自己定义一个初始化值,不会默认定义,否则会挂。

作者: 高亮亮    时间: 2013-10-30 10:33
高亮亮 发表于 2013-10-30 10:32
局部变量跟成员变量最大区别应该实在作用域吧。
成员变量是作用于整个类,而局部变量就是在声明他的那个方 ...

忘了一点,那个局部变量是声明后存在于栈内存里的。
作者: 高亮亮    时间: 2013-10-30 10:33
高亮亮 发表于 2013-10-30 10:32
局部变量跟成员变量最大区别应该实在作用域吧。
成员变量是作用于整个类,而局部变量就是在声明他的那个方 ...

忘了一点,那个局部变量是声明后存在于栈内存里的。
作者: mayor125    时间: 2013-10-30 11:18
成员变量:是定义在类中的,它需要在堆内存中开辟空间,作用范围是整个类,可以被对象调用,且可以被一些例如public、private等修饰符修饰.
局部变量:是定义在方法、参数或者语句中的,它是在栈内存中开辟空间,使用完了之后就在内存中释放掉了,且需要给它初始化值。

下面贴个简单的小例子看一下:
  1. public class Test
  2. {
  3.         int x = 10;                //这里的x是定义在类中的,是成员变量。
  4.         char ch = 'A';        //这个字符变量ch也是成员变量。

  5.         public static void main(String[] args)
  6.         {
  7.                 for (int x=1; x<10 ; x++ )        //这里for循环条件中的x就是局部变量。
  8.                 {
  9.                         System.out.println("Hello Java !");
  10.                 }
  11.         }
  12. }
复制代码

作者: ixiangfeng    时间: 2013-10-30 11:18
通俗地讲成员变量是在类里最外层直接定义的  属于第一下级 作用域是整个类 而局部变量是在类里定义的函数里面定义的 属于第二下级 作用域只是在这个方法里面 方法结束后这个局部变量就不存在了
作者: 靓仔    时间: 2013-10-30 11:44
说简单就是成员变量时整个类中都可以调用,就是class类的{}包住。局部就是内里边有方法,只在那个方法中有效。
准备的说:成员变量定义在类中,需要在堆内存开辟空间。而局部变量需要在栈内存开辟空间,函数调用之后,就当垃圾回收了,也就是释放了
作者: 黄炳期    时间: 2013-10-30 12:36
如果问题已经解决,请及时修改主题为“提问结束”
如何修改?
看帖子http://bbs.itheima.com/thread-89313-1-1.html
作者: 雨过丶天已晴    时间: 2013-10-30 13:08
类体内定义的变量称为成员变量,如果定义该成员变量时没有使用static修饰又称为实例变量或者非静态变量,有static修饰的称为静态变量或者类变量
如:
class Demo{
     private int num; //定义在类体内,所以是成员变量
     private static int num2;//静态变量或者类变量,有static修饰的成员变量
}
局部变量可以分为三类:
1、形参,在方法中定义的局部变量,如getNum(int num),其中的num
2、方法内部的局部变量,如getNum(){ int num; }中的num
3、非静态代码块中的局部变量,如{int num;}中的num
希望对楼主有用,不对之处,大家多多指正

作者: Gump    时间: 2013-10-30 14:02
高亮亮 发表于 2013-10-30 10:32
局部变量跟成员变量最大区别应该实在作用域吧。
成员变量是作用于整个类,而局部变量就是在声明他的那个方 ...

感谢详细回答,解答的很到位,谢谢!
作者: Gump    时间: 2013-10-30 14:02
mayor125 发表于 2013-10-30 11:18
成员变量:是定义在类中的,它需要在堆内存中开辟空间,作用范围是整个类,可以被对象调用,且可以被一些例 ...

感谢详细回答,解答的很到位,谢谢!
作者: Gump    时间: 2013-10-30 14:02
ixiangfeng 发表于 2013-10-30 11:18
通俗地讲成员变量是在类里最外层直接定义的  属于第一下级 作用域是整个类 而局部变量是在类里定义的函数里 ...

感谢详细回答,解答的很到位,谢谢!
作者: Gump    时间: 2013-10-30 14:03
雨过丶天已晴 发表于 2013-10-30 13:08
类体内定义的变量称为成员变量,如果定义该成员变量时没有使用static修饰又称为实例变量或者非静态变量,有 ...

感谢详细回答,解答的很到位,谢谢!大家共同学习




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