Java问题(初学者),为什么x与y交换后x还是输出2 ???public class swap {
public static int swap(int a, int b) {
int t = a;
a = b;
b = t;
return b = t;
}
public static void main(String args[]) {
int x = 2;
int y = 3;
swap(x, y);
System.out.println(x);
}
}
Java问题(初学者),为什么x与y交换后x还是输出2 ???public class swap
答案:4 悬赏:0 手机版
解决时间 2021-01-01 18:04
- 提问者网友:佞臣
- 2021-01-01 14:51
最佳答案
- 五星知识达人网友:西风乍起
- 2021-01-01 15:48
1. 数字类型,值传递
2. 数组引用传递
import java.util.Arrays;
public class MyTest
{
static int x = 2;
static int y = 3;
public static void main ( String[] args ) throws Exception
{
int[] tests = { 1, 21, 13, 78, 3 };
swap (x, y, tests);
System.out.println (x); // 没交换, 作用域在swap函数中
System.out.println (Arrays.toString (tests));
// 或在局部,做交换, 作用域在当前方法
int x = 2;
int y = 3;
int t = x;
x = y;
y = x;
System.out.println (x);
}
public static int swap ( int a, int b, int... tests )
{
// 值传递,值本身不变
int t = a;
a = b;
b = t;
// 直接引用static全局变量,值改变,static内存中
t = x;
x = y;
y = t;
// 交换数组前后元素, 类似逆序
int temp = 0;
for( int i = 0; i < tests.length / 2; i++ )
{
temp = tests[i];
tests[i] = tests[tests.length - i - 1];
tests[tests.length - i - 1] = temp;
}
return a;
}
}
2. 数组引用传递
import java.util.Arrays;
public class MyTest
{
static int x = 2;
static int y = 3;
public static void main ( String[] args ) throws Exception
{
int[] tests = { 1, 21, 13, 78, 3 };
swap (x, y, tests);
System.out.println (x); // 没交换, 作用域在swap函数中
System.out.println (Arrays.toString (tests));
// 或在局部,做交换, 作用域在当前方法
int x = 2;
int y = 3;
int t = x;
x = y;
y = x;
System.out.println (x);
}
public static int swap ( int a, int b, int... tests )
{
// 值传递,值本身不变
int t = a;
a = b;
b = t;
// 直接引用static全局变量,值改变,static内存中
t = x;
x = y;
y = t;
// 交换数组前后元素, 类似逆序
int temp = 0;
for( int i = 0; i < tests.length / 2; i++ )
{
temp = tests[i];
tests[i] = tests[tests.length - i - 1];
tests[tests.length - i - 1] = temp;
}
return a;
}
}
全部回答
- 1楼网友:你可爱的野爹
- 2021-01-01 18:47
你交换的只是形参a,b的值,x,y的值并未交换
再看看别人怎么说的。
- 2楼网友:忘川信使
- 2021-01-01 17:56
如果你想交换 x 和y的值,你需要定义一个多定义一个int z =0; 第一步把x赋值给 z = x;
第二步: x=y
;最后 y=z;
有不懂继续问~
- 3楼网友:荒野風
- 2021-01-01 17:13
JAVA是值传递,方法里面的a、b是局部变量,虽然值跟x、y相等,但不是同一个。
想要交换。给两种方法。
1、把X/Y定义为全局变量,然后直接交换。
2、把X、Y封装到一个对象中,把对象传递过去,然后交换X/Y。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯