其实我本来做的就是交换,但是没完成交换,不知道是哪里出问题了
public class Jiaohuan {
Jiaohuan(int x,int y)
{
int z=x;
x=y;
y=z;
}
public static void main(String[] args) {
int m=1,n=2;
Jiaohuan l=new Jiaohuan(m,n);
System.out.println(m+" "+n);
}
}
public static void main(String[] args) {
int m=1,n=2;
Jiaohuan l=new Jiaohuan(m,n);
System.out.println(m+" "+n);
}
}
你的打印语句是打印的MAIN里的M,N;这两个值根本就没有改变!
M,N在构造函数里改变,可是它没有返回任何东西,所以外面的打印是不会有什么改变的!
上面的程序结果为:2 1
1 2
希望你能根据程序理解!
//file name is Change.java;
//change the x,y;
//2006.1.3;
class Change
{
public static void main(String args[])
{
Change c = new Change();
c.swap(2,6);
}
public void swap(int i,int j)
{
int temp;
temp = i;
i = j;
j = temp;
System.out.println("i= "+i+","+"j= "+j);
}
}
public class Test{
static int[] swap(int x,int y){
int temp =x;
x = y;
y = temp;
int[] swap=new int[2];
swap[0]=x;
swap[1]=y;
return swap;
}
public static void main(String[] args) {
int m=2,n=1;
int[] swap1=Test.swap(m,n);
m=swap1[0];
n=swap1[1];
System.out.println(m+" "+n);
}
}
这样才能影响到实参。
我都调用方法了,为什么输出还是2 1
我都郁闷死了,请人指点~
public class M1 {
void test1(int m,int n){
m=111;
n=1112;
}
public static void main(String[] args) {
int x=2,y=1;
M1 o=new M1();
o.test1(x,y);
System.out.println(x+" "+y);
}
}
我来说两句
你在main方法中定义了两个变量 x,y. 并作为实参传递给了test1方法 java参数传递方式pass by value
你又在test1方法中定义了两个变量m,n 用于接受实参传过来的值,而m,n的生命周期只是在test1方法内
改变m,n的值 不会影响到外面的任何值 你最后的打印语句打印的是main内定义的变量 所以 只能是
打印出2 1
但是通常为了避免混淆最好养成好习惯
不要把各种等级的变量 命名为相当的名字