希望你能详细描述下或者通过内存空间说明解释,谢谢下面代码中的注释是你需要帮我分析的:
注意: 注释的一行代码是 无效行,没有注释代码而是注释文字说明的是有效行
问题:为什么声明了两次 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;
}
不对把,那么我定义了两个 int num 不通过怎么解释,它们可不是一个方法里的吧。作者: 杨庆雷 时间: 2014-8-12 21:43
你传进来的 int num 下面当然不能定义了 只能赋值作者: jw在路途 时间: 2014-8-12 21:55
哦,我刚才又试了试,看来是我之前的理解偏差了。内存空间里,方法是随着调用结束而消失的。所以可以这么理解,当你传入了一个参数进去时,相当于调用的那个方法的变量名已经声明了一次,所以不能重复声明那个变量名。
你说的是正确的,“方法里的变量名作用域是本方法 不同的方法可以有一样的变量名”。我试了试两个方法里都定义了一个不相关的 int c,编译运行都没问题。 问题已解决,谢谢