怎么写一个方法能互换2个变量的值

inyfs 2014-04-05 11:22:18
是写在方法里 调用这个方法 2个变量参数传进去
...全文
722 33 打赏 收藏 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuebichongkafei 2014-05-23
  • 打赏
  • 举报
回复
用临时变量的,太天真了,想想内存图就直到行不通撒
xuebichongkafei 2014-05-23
  • 打赏
  • 举报
回复
用临时变量可以交换,但是楼主要求在方法当中,所以通过数组是最简单的
sunbo624 2014-05-22
  • 打赏
  • 举报
回复
引用 13 楼 foolishdault 的回复:
[quote=引用 10 楼 rui888 的回复:] a=a+b-a b=a+b-b
正解,而且还没引入中间变量[/quote] 正解毛啊 执行第一条之后 a已经等于b了
valid26 2014-05-22
  • 打赏
  • 举报
回复
这样一说 好像真的没有办法呢 值传递 c里面有引用& 可以 还是写个c 然后调用jni吧
lcf 2014-05-21
  • 打赏
  • 举报
回复
引用 13 楼 foolishdault 的回复:
[quote=引用 10 楼 rui888 的回复:] a=a+b-a b=a+b-b
正解,而且还没引入中间变量[/quote]
引用 13 楼 foolishdault 的回复:
[quote=引用 10 楼 rui888 的回复:] a=a+b-a b=a+b-b
正解,而且还没引入中间变量[/quote] 怎么个正解法。。 a = a + b - a; // a = b b = a + b - b; // b = b + b - b = b
vnvlyp 2014-05-21
  • 打赏
  • 举报
回复
引用 26 楼 ivyvae 的回复:
2楼的第一种方法正解。位操作,效率高。
第一种用Xor的没有引入中间变量速度快
yuhouqingchen_2648 2014-05-21
  • 打赏
  • 举报
回复
引用 4 楼 wlwlwlwl015 的回复:
用一个临时变量来交换数据么,很简单的,比如: int a=1. int b=2. 这样: int temp, temp=a a=b. b=temp. 要掌握思想,给你代码没用。这是最基本的一个东东啊。
他说的是方法参数,就像c中传地址一样子
听!起风了~~~ 2014-04-15
  • 打赏
  • 举报
回复
没想到两个变量换下值,有那么多方法
风吹得好舒服 2014-04-15
  • 打赏
  • 举报
回复
2楼的第一种方法正解。位操作,效率高。
Herry0818 2014-04-15
  • 打赏
  • 举报
回复
不增加变量就直接交换这两个变量的值

    static void changeValue(String s1, String s2) {
	
	s1 = s1 + s2;
	System.out.println(s1 + "\t" + s2);
	s2 = s1.substring(0,s1.length()-s2.length());

	System.out.println(s1 + "\t" + s2);
	s1 = s1.substring(s2.length(),s1.length());
	
	System.out.println(s1 + "\t" + s2);
	
    }
cheng_e_1990 2014-04-14
  • 打赏
  • 举报
回复
这个要看你的变量是什么类型的了,如果是基本数据类型的话用数组集合都是可以的,如果是引用类型的话,要看你的引用类型怎么定义的了。
alan19931103 2014-04-14
  • 打赏
  • 举报
回复
可以用数组啊
机器学习之禅 2014-04-14
  • 打赏
  • 举报
回复
package test; import java.util.ArrayList; import java.util.List; public class test{ public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); int a = 10; int b = 20; list = exchange(a,b); a = list.get(0); b = list.get(1); System.out.println("The input is a: 10, b: 20 \nAfter exchanging a and b:"+"a: "+a+" b: "+b); } public static List<Integer> exchange(int a, int b) { int temp; List<Integer> list = new ArrayList<Integer>(); temp = a; a = b; b = temp; list.add(a); list.add(b); return list; } }
tobbyzw 2014-04-14
  • 打赏
  • 举报
回复
引用 21 楼 lg1544650023 的回复:
[quote=引用 20 楼 sca4441479 的回复:] [quote=引用 13 楼 foolishdault 的回复:] [quote=引用 10 楼 rui888 的回复:] a=a+b-a b=a+b-b
正解,而且还没引入中间变量[/quote] 逗,b的等式里a已经不是a的值了,是b的值。[/quote] 说正解的那位只不过是在嘲讽,你们听不出来吗[/quote] a=a+b; b=a-b; a=a-b;
sleeplacker 2014-04-14
  • 打赏
  • 举报
回复
引用 20 楼 sca4441479 的回复:
[quote=引用 13 楼 foolishdault 的回复:] [quote=引用 10 楼 rui888 的回复:] a=a+b-a b=a+b-b
正解,而且还没引入中间变量[/quote] 逗,b的等式里a已经不是a的值了,是b的值。[/quote] 说正解的那位只不过是在嘲讽,你们听不出来吗
sca4441479 2014-04-14
  • 打赏
  • 举报
回复
引用 13 楼 foolishdault 的回复:
[quote=引用 10 楼 rui888 的回复:] a=a+b-a b=a+b-b
正解,而且还没引入中间变量[/quote] 逗,b的等式里a已经不是a的值了,是b的值。
sleeplacker 2014-04-14
  • 打赏
  • 举报
回复
java里面参数传递方式只有值传递一种,要实现你的功能值传递是不行的,所以你想将基本数据类型变量作为参数并想试图交换它们的值是不可能的。 要想交换参数的值必须要涉及引用,所以你要交换的变量必须是某个对象的成员或某个数组的元素。 以数组成员为例举个例子:
package csdn;

class A {
	public Object value = 0;

	public A() {

	}

	public A(Object i) {
		value = i;
	}
}

public class CSDNTest {
	public static void fun(A x, A y) {
		Object temp = x.value;
		x.value = y.value;
		y.value = temp;
	}

	public static void main(String[] args) {
		int x = 1, y = 2;
		A ax = new A(x);
		A ay = new A(y);
		System.out.println("ax = " + ax.value + "," + "ay = " + ay.value);
		fun(ax, ay);
		System.out.println("ax = " + ax.value + "," + "ay = " + ay.value);
	}
}
x和y的值是无法通过函数交换的,如果你希望有两个数据的值能交换,那么你就要将它们作为类A的成员,因为a.value是对value的引用,通过引用就能交换数据的值
Gaken 2014-04-14
  • 打赏
  • 举报
回复
引用 13 楼 foolishdault 的回复:
[quote=引用 10 楼 rui888 的回复:] a=a+b-a b=a+b-b
正解,而且还没引入中间变量[/quote] 真的是正解吗?你说正解的时候有没有试过?
铁匠梁老师 2014-04-11
  • 打赏
  • 举报
回复
引用 10 楼 rui888 的回复:
a=a+b-a b=a+b-b
正解,而且还没引入中间变量
haozhongjun 2014-04-11
  • 打赏
  • 举报
回复
加载更多回复(13)

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧