日期:2014-05-20  浏览次数:20669 次

java方法执行过程中的参数赋值问题
本帖最后由 tangchaofeiya 于 2013-01-24 22:04:08 编辑
public static void ch1(int n){
n=100;
}
public static void ch2(int n){
n=200;
}
public static void ch3(int n){
n=300;
}
public static void main(String args[]) {
int n=10;
                //new Hay().ch1(n);//1.如果把static删掉,输出100
ch1(n);//2.这样子输出10,为什么
ch2(n);
ch3(n);
System.out.println(n);
}
结果:main方法注释中的2种问题,我搞不懂啊

------解决方案--------------------
因为你的n 没有 在 方法内 System.out.println();
等同于 int n=3;
System.out.println(n);

================
如果在方法内 
public static void ch1(int n){
 n=100;
SyStem.out.println(n);
}
就是 相当于 n为10 作为参数 传入 方法 然后 n=100; 把n 重新赋值..
然后System.out.print(n);
就 等于100了

------解决方案--------------------
楼主要知道,ch1方法里的n,是属于ch1方法的局部变量,作用范围只是在ch1中而已,它怎么变化,都不会影响到main方法里的n。两个n是两回事。
------解决方案--------------------
我在博克里画了几张图,楼主可以参考一下:
http://blog.csdn.net/nmyangym/article/details/8531053
------解决方案--------------------
//new Hay().ch1(n);//1.如果把static删掉,输出100Hay是类名?这句,输出是10
 ch1(n);//2.这样子输出10,为什么
解释,n是简单类型,在这几个方法中都是值传递,传递中只是把n所指向的地址复制了一份给方法中的变量n,修改的是复制的地址,而不是main方法中n指向的地址