今天逛牛客,看见了一个面经,然后就进去看了看。突然看到一个问题:

int a=5,b=3 如何不用第三个变量,调换它俩的值

我第一反应,啊!啊?啊?啊o((⊙﹏⊙))o.。震惊我一百年,不用第三个变量,这怎么变?

我想到Go语言,有个语法糖,确实不需要第三个变量就可以交换值。难道Java也有???

然后,我就百度搜索了一个,不禁感叹,女少口阿!女少口阿!

然后特此记录以下,记录两个方法吧

方法一

1
2
int a = 5,b=3;
b = (a+b)-(a=b);

b = (a+b)-(a=b);,啊这….

代码从左向右执行,先是a+b,然后是把b赋值给a,最后是a+b-b赋值给b。

然后就交换了值。巧妙的利用了,代码的执行顺序。真是细他妈给细开门——细到家了!!!

方法二

这种方法算是一种算法吧

1
2
3
4
5
6
int a = 5;
int b = 3;
a = b - a; //b=3;a=5;-->a = -2
b = b - a; //b=3;a=-2;-->b = 5
a = b + a; //b=5;a=-2; --->a=3
//最后a = 3, b = 5

这也很妙啊,说不上来的妙。

这也算是一个编程小tips!我觉得还是方法一好!

__END__