黑马程序员技术交流社区

标题: 谁能给我讲讲局部变量和成员变量的区别啊? [打印本页]

作者: 任长存    时间: 2015-12-28 15:26
标题: 谁能给我讲讲局部变量和成员变量的区别啊?
这个代码和视频有点看不懂。
class Demo2_Person {
        public static void main(String[] args) {
                Person p = new Person();
                p.speak();
        }
}
class Person {
        String name;                                               
        int num;

        public void speak() {
                int num = 10;                                               
                System.out.println(name);
       
                System.out.println(num);
        }
}


作者: iori    时间: 2015-12-28 18:14
首先我们看一下,程序开始运行。:
class Demo2_Person {
        public static void main(String[] args) {
                Person p = new Person(); (这里创建了Person类的对象p,同时访问Person类的无参构造(因为你没有写,所以系统隐藏自动给出,)对Person类的数据进行初始化。
p.speak();  访问Person类中的speak方法。然后我们进行入到Person类中。
class Person {
        String name;     //String name是成员变量,有初始化值为null                                          
        int num;      // 同理 int num 也是成员变量,初始化值为0。
因为调的是sperk方法,所以进行到sperk方法中。num给值为10(因为上面已经定义了num为成员变量,所以
会把这个值给成成没变量num。)
   System.out.println(name);
       // 输出name,没有给值,所以输入默认值
                System.out.println(num);//给值了,所以输出10
最后:
                成员变量:随着对象的创建而存在,随着对象的消失而消失
                局部变量:随着方法的调用而存在,随着方法的调用完毕而消失

作者: luyang18    时间: 2015-12-28 21:55
二楼好详细的讲解
作者: 云鱼    时间: 2015-12-28 22:16
成员变量,定义在类中方法外;
局部变量,定义在方法中
作者: 云鱼    时间: 2015-12-28 22:17
iori 发表于 2015-12-28 18:14
首先我们看一下,程序开始运行。:
class Demo2_Person {
        public static void main(String[] args) ...

八神庵{:2_43:}
作者: zhj806504628    时间: 2015-12-28 22:21
局部变量在方法外面不能被使用,成员变量,本类中都可以使用!
作者: 路路路路灯亮了    时间: 2015-12-28 22:55
二楼解答完美
作者: 隔壁老猫    时间: 2015-12-28 22:58
在类中的位置不同
        成员变量:在类中方法外
        局部变量:在方法定义中或者方法声明上
在内存中的位置不同
        成员变量:在堆内存(成员变量属于对象,对象进堆内存)
        局部变量:在栈内存(局部变量属于方法,方法进栈内存)
生命周期不同
        成员变量:随着对象的创建而存在,随着对象的消失而消失
        局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同
        成员变量:有默认初始化值
        局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。

都是一些笔记上的内容
作者: Zrz_K    时间: 2015-12-28 23:27
楼上说的很详细了,顶




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