Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一行中交换两个变量的Java程序?_Java_Programming Languages_Bitwise Operators - Fatal编程技术网

在一行中交换两个变量的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
相同吗?