黑马程序员技术交流社区

标题: 成员变量和局部变量的区别? [打印本页]

作者: 罗伊    时间: 2015-9-22 00:29
标题: 成员变量和局部变量的区别?
成员变量和局部变量的区别?

作者: 僵尸舞    时间: 2015-9-22 00:34
* A:在类中的位置不同
        * 成员变量:在类中方法外
        * 局部变量:在方法定义中或者方法声明上
* B:在内存中的位置不同
        * 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
        * 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
* C:生命周期不同
        * 成员变量:随着对象的创建而存在,随着对象的消失而消失
        * 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
* D:初始化值不同
        * 成员变量:有默认初始化值
        * 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
       
作者: xiaote0225    时间: 2015-9-22 00:41
1).成员变量:
                                A.定义在"类体"中;可以是任何数据类型;
                                B.会被自动初始化;
                                        class Student{
                                                String name;
                                                void show(){
                                                        System.out.println("我叫:" + num);        //打印:我叫:null
                                                }
                                        }
                                C.当实例化对象后,被存储在"堆"中;
                                D.当"对象"不被使用(没有任何引用),并被垃圾回收器回收时被清理;
                                       
                        2).局部变量:
                                A.定义在某个方法、或其它代码块中;
                                B.必须显示初始化,否则不能访问其值;
                                        class Student{
                                                void show(){
                                                        String name;
                                                        System.out.println("我叫:" + name);        //编译错误。局部变量必须显示初始化才能访问其值;
                                                        name = "张三";        //OK。可以被赋值。
                                                }
                                        }
                                C.当方法或其它代码块被执行时,基本数据类型的"值"和引用数据类型的"引用"都是存储在"栈"中;
                                D.当方法或代码块执行完毕时,会被立即清理;




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