在一行中交换两个变量的Java程序?
我们讨论了在没有临时变量的情况下交换两个整数的不同方法。在不使用库函数的情况下,如何在单个语句中交换变量在一行中交换两个变量的Java程序?,java,programming-languages,bitwise-operators,Java,Programming Languages,Bitwise Operators,我们讨论了在没有临时变量的情况下交换两个整数的不同方法。在不使用库函数的情况下,如何在单个语句中交换变量 Python:在Python中,有一个简单且语法简洁的结构来交换变量,我们只需要编写“x,y=y,x”。非常难看,但这应该可以做到 int x = 100; int y = 19; x = y + -x + (y = x); 产出: 19,100 100,19 很难看,但这应该能奏效 int x = 100; int y = 19; x = y + -x + (y = x); 产出
Python:在Python中,有一个简单且语法简洁的结构来交换变量,我们只需要编写“x,y=y,x”。非常难看,但这应该可以做到
int x = 100;
int y = 19;
x = y + -x + (y = x);
产出:
19,100
100,19
很难看,但这应该能奏效
int x = 100;
int y = 19;
x = y + -x + (y = x);
产出:
19,100
100,19
您可以使用位异或
x = x ^ y ^ (y = x);
您可以使用位异或
x = x ^ y ^ (y = x);
这个链接为这个问题提供了更多的信息,而不仅仅是给OP他们的家庭作业答案。这个链接为这个问题提供了更多的信息,而不是简单地给OP他们的家庭作业答案。与Python不同,Java没有一个很好的在一行上构造多个赋值的方法。我发现我们可以使用位运算符来做这件事。。。x=x^y^(y=x);总之,你可能不想这样做。在Python中,在一行上进行交换的语法相当清楚。按位操作不是(而且它只适用于整数类型)。一般来说,以最大化清晰度的方式做某事是可取的。“一行”只是意味着没有换行符,因此
{int tmp=x;x=y;y=tmp;}
很容易理解,而且只有一行。从形式上讲,这也是一条语句,因为块是一条语句。如果仍然不能令人信服,您可以使用一个do…while
语句:do{int tmp=x;x=y;y=tmp;}while(false)代码>这不仅仅是调用x=x^y^(y=x)来扩展人工需求代码>一个单独的语句…@Holger,虽然是XOR。。和Python一样,Java并没有一个很好的在一行上构造多个赋值的方法。。。x=x^y^(y=x);总之,你可能不想这样做。在Python中,在一行上进行交换的语法相当清楚。按位操作不是(而且它只适用于整数类型)。一般来说,以最大化清晰度的方式做某事是可取的。“一行”只是意味着没有换行符,因此{int tmp=x;x=y;y=tmp;}
很容易理解,而且只有一行。从形式上讲,这也是一条语句,因为块是一条语句。如果仍然不能令人信服,您可以使用一个do…while
语句:do{int tmp=x;x=y;y=tmp;}while(false)代码>这不仅仅是调用x=x^y^(y=x)来扩展人工需求代码>一个单独的语句…@Holger,虽然是XOR。。你知道,y+-x
与y-x
相同吗?你知道,y+-x
与y-x
相同吗?