A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗伊 中级黑马   /  2015-9-22 00:29  /  257 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

成员变量和局部变量的区别?

2 个回复

正序浏览
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.当方法或代码块执行完毕时,会被立即清理;
回复 使用道具 举报
* A:在类中的位置不同
        * 成员变量:在类中方法外
        * 局部变量:在方法定义中或者方法声明上
* B:在内存中的位置不同
        * 成员变量:在堆内存(成员变量属于对象,对象进堆内存)
        * 局部变量:在栈内存(局部变量属于方法,方法进栈内存)
* C:生命周期不同
        * 成员变量:随着对象的创建而存在,随着对象的消失而消失
        * 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失
* D:初始化值不同
        * 成员变量:有默认初始化值
        * 局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
       
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马