Java语言,怎么交换x y的值,用函数而不是直接的性使

static void swap(int x, int y) {
x = y;
y = x;
return;
}
虽然没有出错,但是为什么不行

9个回答

static void swap(int x, int y) {
int z =x;
x=y;
y=z;
return;
}

int 是基本类型 属于值传递 传参数过去 变量是改不了的 其次交换数据如下:
int c =x;
x=y;
y=c;

你可以将函数的参数弄成Integer x, Integer y,Java有自动的装箱和拆箱机制,内如交换补一个变量。

static void swap(int x, int y) {
int z =x;
x=y;
y=z;
return;
}

封装成对象后交换,基本数据类型直接在栈内

需要第三个变量进行值传递

你传值到函数里面,那么传进去的这两个参数的变化只作用于函数里面,
外面是无变化的,想要改变变量的值,必须重新赋值。比如你的例子:
static void swap(int x, int y) {
x = y;
y = x;
return;
}

假设你开始定义的变量是m和n,你执行函数swap(m,n)之后,是函数swap定义了x=m和y=n,
至于函数里面x,y的变化已经和m,n没有关系了,改变的只是x和y。如果你要改变m,n的值,必须重新赋值到原来的m,n。
int m = 10;
int n = 20;

int c = m;
m=n;
n=c;

static void swap(int x, int y) {

x=y; //y的值赋给x,则x=y
y=x; //这一步x的值赋给y,由于上一步x=y,则这一步是没有意义的,结果都是x=y而且都等于最开始y的值。
return;
}
因此,两个数交换值不可以直接交换,而是借用中间变量,假设x=1,y=2将x的值赋给z,z=1,y的值给x,x=2,z的值在赋给y,y=1,则最后x=2,y=1.

你可以类比下,现在有两杯水,你要交换下这两个杯子里面的水,怎么才能办到?是不是应该有第三个杯子。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问