首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java方法执行过程中的参数赋值有关问题

2013-01-28 
java方法执行过程中的参数赋值问题本帖最后由 tangchaofeiya 于 2013-01-24 22:04:08 编辑public static v

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指向的地址

热点排行