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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jw在路途 中级黑马   /  2014-8-12 21:16  /  1221 人查看  /  4 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 jw在路途 于 2014-8-13 20:46 编辑

    帮我解决下这个问题,今天敲代码有个现象吧自己绕着了,在我自己的理解是,同一个类中不能重复声明同一个变量名,否则报错。
但是下面的为什么可以通过呢???

希望你能详细描述下或者通过内存空间说明解释,谢谢下面代码中的注释是你需要帮我分析的:
                             注意:     注释的一行代码是 无效行,没有注释代码而是注释文字说明的是有效行
                           问题:为什么声明了两次   int a  ,编译运行不报错?

public class Demo {
        public static void main(String[] args) {
                int num=20;   //这声明了一个变量num
        
                int a=change(num);  //这里也声明了个变量a
                System.out.println(a);
        }
        public static int change(int num) {
                  //     int num=0;      如果在这里声明一个num变量,编译不通过,已验证。
                 int a=20;   //方法局部里声明了变量 a ,没有问题
                return a;
        }
        
}






4 个回复

倒序浏览
方法里的变量名作用域是本方法  不同的方法可以有一样的变量名
回复 使用道具 举报
杨庆雷 发表于 2014-8-12 21:36
方法里的变量名作用域是本方法  不同的方法可以有一样的变量名

不对把,那么我定义了两个 int num 不通过怎么解释,它们可不是一个方法里的吧。
回复 使用道具 举报
你传进来的 int num  下面当然不能定义了  只能赋值
回复 使用道具 举报
哦,我刚才又试了试,看来是我之前的理解偏差了。内存空间里,方法是随着调用结束而消失的。所以可以这么理解,当你传入了一个参数进去时,相当于调用的那个方法的变量名已经声明了一次,所以不能重复声明那个变量名。
你说的是正确的,“方法里的变量名作用域是本方法  不同的方法可以有一样的变量名”。我试了试两个方法里都定义了一个不相关的 int c,编译运行都没问题。  问题已解决,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马