黑马程序员技术交流社区

标题: 关于成员变量和局部变量的用法 [打印本页]

作者: SpiderManZZH    时间: 2014-11-21 10:06
标题: 关于成员变量和局部变量的用法
先看例子:
//对Car这类事物进行描述
class Car
{
         //成员变量
         String color = "red";
         int num = 4;
         //成员方法
         void show()
        {
             //临时变量
            int num = 10;
            //输出临时变量的值
           System. out.println("color = " +color +"...num = " +num);
        }
}
如上所诉,通过实例化对象调用show()方法,打印的num是局部变量的值等于10,如果要打印成员变量代码可改为this.num
问题::当成员变量和局部变量同名时,如果输出打印的是num不是this.num,为什么会默认是局部变量的值,而不是成员变量的值?


作者: 奋斗的蜗牛ksd    时间: 2014-11-21 10:09
this.num的 this指的是对象,你这对象都没初始化呢,怎么可能调用  成员变量4.在show函数内, 局部变量num覆盖了成员变量,而color是类初始化就有的,所以是red。如果去掉局部变量num 就会输出成员变量num了!
作者: 依米阳光    时间: 2014-11-21 10:17
奋斗的蜗牛ksd 发表于 2014-11-21 10:09
this.num的 this指的是对象,你这对象都没初始化呢,怎么可能调用  成员变量4.在show函数内, 局部变量num ...

show() 方法执行时说明该类的对象已经创建了···
作者: 依米阳光    时间: 2014-11-21 10:19
就近原则,局部变量比成员变量的优先级高。如果签名相同则在使用局部变量时会覆盖成员变量值。应该是这样的




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