永发信息网

Java问题(初学者),为什么x与y交换后x还是输出2 ???public class swap

答案:4  悬赏:0  手机版
解决时间 2021-01-01 18:04
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);

}

}
最佳答案
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;
}
}
全部回答
你交换的只是形参a,b的值,x,y的值并未交换 再看看别人怎么说的。
如果你想交换 x 和y的值,你需要定义一个多定义一个int z =0; 第一步把x赋值给 z = x; 第二步: x=y ;最后 y=z; 有不懂继续问~
JAVA是值传递,方法里面的a、b是局部变量,虽然值跟x、y相等,但不是同一个。 想要交换。给两种方法。 1、把X/Y定义为全局变量,然后直接交换。 2、把X、Y封装到一个对象中,把对象传递过去,然后交换X/Y。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
通讯稿格式是什么
单选题据地壳物质的组成关系,下列排列正确的
清脆丶脱离丶崎岖丶井然丶顽强丶长驱直人丶斩
-Drunken drive is dangerous, isn’t it?--
求极限什么时候可以直接代入X,什么时候不能
怎么写?500字
手上缝二针几天后能吃海鲜带鱼
请写出一个同时具备:①y随x的增大而减小;②
共享的图片可以用于商业用途,侵权吗
如果对方拒收快递怎么办
博静网吧地址在哪,我要去那里办事,
蘑菇街里面1个蘑豆代表多少钱
小球浸在水中的体积为1*10-3次方 立方米该小
婀娜的读音是什么
2013年3月的东风标致408,2.0排量,自动档,
推荐资讯
京广线和京九线的路线怎么走?都经过哪些城市?
核磁共振碳谱图相关问题 10分
端午节,民间有在屋中贴五毒图的民俗,以红纸
广东话八封是什么意思
怎么写学生困难补助申请???
怎样给手机重装系统
显卡什么牌子的质量最好。
191树脂能耐70度热水吗?
急切想知道如何解开电子日记本(EDiary)的密
某校今年植树节组织八年级45名团员去郊外植树
维也纳转机需要签证吗
缠人的意思是什么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?