Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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 - Fatal编程技术网

java交换操作员临时

java交换操作员临时,java,Java,我试图理解如何编写下面涉及交换/交换运算符的语句的逻辑。到目前为止,我一直在谷歌上搜索文本(java问题解决简介)。以前是否有人在以下问题上遇到过困难,并可能找到了答案(这是一个关于字符串的示例,但我通常在使用temp的交换运算符时遇到过困难): 有两个字符串变量s1和s2已经声明和初始化。编写一些代码来交换它们的值 我知道我应该使用一个临时变量,这正是我的逻辑为空的地方 我写它的方式,我知道它的错误如下: temp = s1; s2 = temp; 把变量想象成只能容纳一件东西的容器。要交换

我试图理解如何编写下面涉及交换/交换运算符的语句的逻辑。到目前为止,我一直在谷歌上搜索文本(java问题解决简介)。以前是否有人在以下问题上遇到过困难,并可能找到了答案(这是一个关于字符串的示例,但我通常在使用temp的交换运算符时遇到过困难):

有两个字符串变量s1和s2已经声明和初始化。编写一些代码来交换它们的值

我知道我应该使用一个临时变量,这正是我的逻辑为空的地方

我写它的方式,我知道它的错误如下:

temp = s1;
s2 = temp;

把变量想象成只能容纳一件东西的容器。要交换两个变量的值,需要三个容器

String s1 = "Some string", s2 = "Another string", tmp;
tmp = s1; // put the first item into the third bin
s1 = s2; // put the second item into the first bin
s2 = tmp; // put the first item into the second item

在不正确的解决方案中,您丢失了
s2
的值。您希望使用
temp
保留任一变量的值,以便在交换过程中不会丢失该值

下面列出了您需要做的事情:

  • 在某处复制
    s1
    的值
  • 现在,保存
    s1
    的副本后,您可以将
    s2
    的值分配给
    s1
  • 现在将您制作的
    s1
    副本分配给
    s2
所有语言版本:

temp = s1; // temporarily store the s1 value because we'll replace it next
s1 = s2; // now s1 lost it's value, and got a new one
s2 = temp; // luckily s2 doesn't go home empty handed, the temp is still good

为了完整性起见,有一种特殊情况,即不需要临时变量

如果要交换的两个值长度相等,且语言允许您对其使用位运算符,则可以执行以下操作:


虽然在现代计算机上,这很少实用,但了解并演示XOR操作的一个有趣方面是很好的。

没有必要在第一行初始化
tmp
。不,没有;只是一个习惯。我总是用null初始化。明确性增加了代码含义的清晰性:)@Adzer:在Java中,如果没有有用的默认值,我不会初始化局部变量。通过这种方式,您可以捕获单元化的使用(编译器将警告您)。否:)仅限于他知道的一个;)我相信Python是在后台实现这一点的,但是语法糖让我们觉得我们只使用了这两个变量。但是,我想不出还有哪种语言不这样做;与AX交换字寄存器:)[s1,s2]=[s2,s1]//ECMAScript.next Sooo。。。一句话:昨天的设计模式是今天的语言功能。@purtip31:Go借用了Python的一部分,所以我想是这样的。但是我没有弄乱语言。这个问题需要的是逻辑澄清,而不是逻辑更加模糊的技术解决方案:当我进入这个论坛时,感谢编辑!尽量不要把它看作一个论坛。答案的顺序将随投票而改变。
A = A bitwise xor B
B = A bitwise xor B
A = A bitwise xor B