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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© SpiderManZZH 中级黑马   /  2014-11-21 10:06  /  1259 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

先看例子:
//对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,为什么会默认是局部变量的值,而不是成员变量的值?

3 个回复

倒序浏览
this.num的 this指的是对象,你这对象都没初始化呢,怎么可能调用  成员变量4.在show函数内, 局部变量num覆盖了成员变量,而color是类初始化就有的,所以是red。如果去掉局部变量num 就会输出成员变量num了!
回复 使用道具 举报
奋斗的蜗牛ksd 发表于 2014-11-21 10:09
this.num的 this指的是对象,你这对象都没初始化呢,怎么可能调用  成员变量4.在show函数内, 局部变量num ...

show() 方法执行时说明该类的对象已经创建了···
回复 使用道具 举报
就近原则,局部变量比成员变量的优先级高。如果签名相同则在使用局部变量时会覆盖成员变量值。应该是这样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马