3 回答

TA貢獻1830條經驗 獲得超9個贊
這不僅是一個可怕的想法,它甚至不是一個可怕想法的良好實現!老把戲是:
a^=b;
b^=a;
a^=b;
那個不會有不足/溢出的問題,并且真的會讓你的同事更加困惑。我的意思是,如果你要去混亂,表現不佳的代碼...一路走來!
順便說一句,我通常會說,如果你認為你可能會從以稍微不那么明顯的方式做某事中獲得一些性能優勢,那就永遠不要這樣做。首先,你可能錯了,你的解決方案并不快。其次,Java已經非??炝?,這可能并不重要。第三,隨著時間的推移,java將改進“明顯”的方式,并使用運行時編譯器使它們更快。它不會改善你的黑客攻擊,甚至可能使它變慢。
如果你不相信我,你可能仍然相信每次連接兩個字符串時都應該使用stringbuilder......

TA貢獻2019條經驗 獲得超9個贊
public class SwapTest {
int firstNum = 10;
int secondNum = 20;
public static void main(String args[])
{
SwapTest swap2Numbers = new SwapTest();
long before = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
swap2Numbers.proceedNoInterimVariable();
}
System.out.println(" no temp variable took " + (System.currentTimeMillis()-before));
before = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
swap2Numbers.proceedWithInterimVariable();
}
System.out.println("with temp variable took " + (System.currentTimeMillis()-before));
}
private void proceedNoInterimVariable()
{
firstNum = firstNum + secondNum;
secondNum = firstNum - secondNum;
firstNum = firstNum - secondNum;
}
private void proceedWithInterimVariable()
{
int temp = firstNum;
firstNum = secondNum;
secondNum = temp;
}
}
從我的系統上,臨時變量版本的性能要快得多。
no temp variable took 11
with temp variable took 4
添加回答
舉報