public static void main(String[] arg){
int i = 10;
int o = 20;
func(i, o);
System.out.print("i->"+i+",o->"+o);
}
private static void func(int i, int o){
...
}
如何答案等于 i->20,o->10 只能在func中填代码
int k=0;
k=i;
i=o;
o=k;
int i=10; int o=20;的意思是开辟了两块新的内存用于存放这两个数据;
所以
private static void func(int i , int o){
//在被前方法调用的时候 i 和 o 的内存地址是不会变的;
int x = i ; //开辟一块新内存用于存放i的值
i = o ; //内存i的值变成 o
o = x ; //内存o的值变成了x (而x的值为i)
//至此,o和i的值就相互转化了
}
i = i + o;
o = i - o;
i = i - o;
理解好java的参数传递是值传递,基本类型的值就是本身,复制了一个传过去。引用类型传递了引用地址。理解了这些基本概念,不是难题
Java里函数的参数只能传值,传递参数时,会对参数做一份拷贝,函数内实际上是对拷贝的操作,对原值不会产生任何影响,所以通过参数是无法输出想要的内容的,
而题目里 返回值也被定为void类型,所以通过返回值修改 i o的值的路也行不通,这题要么如楼上所写的投机方式,要么就无解。
来个和tom_tom_tom_xiang 类似的取巧
func(int i,int c){
system.println.out("c+","+i);
Thread.currentThread().stop();
}