当前位置:编程学习 > JAVA >>

两个变量不借助第三方怎么交换

两个变量不借助第三方怎么交换
两个变量不借助第三方怎么交换
两个变量不借助第三方怎么交换
两个变量不借助第三方怎么交换
两个变量不借助第三方怎么交换 --------------------编程问答-------------------- a=b+a;
b=a-b;
a=a-b; --------------------编程问答-------------------- a=b+a;
b=a-b;
a=a-b;
比较靠谱! --------------------编程问答-------------------- 如果是字符串或是别的对象,还能行么? --------------------编程问答--------------------
引用 楼主 z_j_i_e 的回复:
两个变量不借助第三方怎么交换
两个变量不借助第三方怎么交换
两个变量不借助第三方怎么交换
两个变量不借助第三方怎么交换
两个变量不借助第三方怎么交换


异或方式
public static void main(String[] args) {
long x = 10;
long y = 20;
x = x ^ y;
y = x ^ y;
x = x ^ y;
System.out.println("X:" + x + "\n" + "Y:" + y);
}


不过该方法只适合整形变量! --------------------编程问答--------------------
引用 1 楼 liuchy945 的回复:
a=b+a;
b=a-b;
a=a-b;

这方法貌似绝就绝在即使数据溢出照样能正常交换 --------------------编程问答--------------------
引用 5 楼 dracularking 的回复:
引用 1 楼 liuchy945 的回复:a=b+a;
b=a-b;
a=a-b;
这方法貌似绝就绝在即使数据溢出照样能正常交换

是的啊,反正是以补码的方式进行运算的,溢出后,进位and借位抵消了 --------------------编程问答--------------------
引用 1 楼 liuchy945 的回复:
a=b+a;
b=a-b;
a=a-b;

+ --------------------编程问答-------------------- 为什么要这样呢? --------------------编程问答-------------------- 昨天的问题,今天又问。
还有,两个变量,你们看一下。
String s0 = "aaa"
String s1 = "bbb"
请大家告诉我这两个变量怎么换? --------------------编程问答-------------------- 道理类似,先拼接,然后用substring --------------------编程问答--------------------

int a=21,b=34;

//交换
a^=b;
b^=a;
a^=b;
--------------------编程问答-------------------- a=b+a;
b=a-b;
a=a-b; --------------------编程问答--------------------
引用 6 楼 kiritor 的回复:
引用 5 楼 dracularking 的回复:引用 1 楼 liuchy945 的回复:a=b+a;
b=a-b;
a=a-b;
这方法貌似绝就绝在即使数据溢出照样能正常交换
是的啊,反正是以补码的方式进行运算的,溢出后,进位and借位抵消了

这个是不是涉及到字面上一个小数减大数等于几

 11111100
-
 11111110
=
 11111110

这种减法和补码有什么关系? --------------------编程问答--------------------

public static void main(String[] args) {
String a="xx";
String b="yy";
a=a+b;
b=a.substring(0, a.length()-b.length());
System.out.println(b);
a=a.substring(b.length(), a.length());
System.out.println(a);
}

结果正常 --------------------编程问答--------------------
引用 14 楼 AA5279AA 的回复:
Java code
?



12345678910

public static void main(String[] args) {         String a="xx";         String b="yy";         a=a+b;         b=a.substring(0, a.length()-b.length());         System……


正解  --------------------编程问答-------------------- a=b+a;b=a-b;a=a-b;
或者借用指针(c语言) --------------------编程问答--------------------  String a="aaa";
 String b="bbb";
 a+=","+b;
 b=a.split(",")[0];
 a=a.split(",")[1];
System.out.println(a);
System.out.println(b); --------------------编程问答--------------------
引用 17 楼 yuchao890129 的回复:
 String a="aaa";
 String b="bbb";
 a+=","+b;
 b=a.split(",")[0];
 a=a.split(",")[1];
System.out.println(a);
System.out.println(b);

如果a="a.b"
b="a.c"
呢?
字符具有不确定性 --------------------编程问答-------------------- a=b+a;
b=a-b;
a=a-b; --------------------编程问答-------------------- 各位,我受教了 --------------------编程问答-------------------- b=a+b;
a=b-a;
b=a-b; --------------------编程问答--------------------
	public static void main(String[] args){

String s = "aaa";
String s1 = "bbb";
s = s1 + s;
s1 = s.substring(3);
s = s.substring(0, 3);
System.out.println(s  + "\n" + s1);
}
--------------------编程问答-------------------- 恩,恩,说有的道理 --------------------编程问答-------------------- 如果是理解算法的时候拿来做做例子还行,实际中用这种做法没啥意义。 --------------------编程问答--------------------
引用 1 楼 liuchy945 的回复:
a=b+a;
b=a-b;
a=a-b;


靠谱 --------------------编程问答--------------------
引用 14 楼 AA5279AA 的回复:
Java code?123456789public static void main(String[] args) {        String a="xx";        String b="yy";        a=a+b;        b=a.substring(0, a.length()-b.length());        System.out.pri……

+10086 --------------------编程问答--------------------
引用 18 楼 AA5279AA 的回复:
引用 17 楼 yuchao890129 的回复: String a="aaa";
 String b="bbb";
 a+=","+b;
 b=a.split(",")[0];
 a=a.split(",")[1];
System.out.println(a);
System.out.println(b);
如果a="a.b"
b="a.c"
呢?
……

设置的间隔字符换一个和字符串里你一样的就好了吧。。 --------------------编程问答-------------------- 一般用不到,不过还是有点牛啊! --------------------编程问答--------------------
引用 2 楼 xianwangkai 的回复:
a=b+a;
b=a-b;
a=a-b;
比较靠谱!

一直以为移位才靠谱,没发现这个无误。。
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,