1. 程式人生 > 實用技巧 >一杯果汁和一杯水的故事

一杯果汁和一杯水的故事

不知道各位小夥伴們有沒有聽過這樣一個故事,講的是一杯果汁和一杯水如何在不改變兩杯液體的情況下,將兩杯液體互換。在你聽過的那個版本中,或許主角不是果汁,而是可樂。

其實,這個小故事主要是為了說明一個程式設計方面的小知識,兩變數交換值。之前,我以為故事的發展是這樣的,取來一隻空杯子(新建一個同類型的變數),然後將二者互換。直到最近,機緣巧合之下,我才發現原來還有其他兩種方法能達到交換兩變數的目的,而且不需要新建第三個變數。

方法一:異或交換

public class Pra {
    public static void main(String[] args) {
        int i = 2;
        
int j = 6; j = i ^ j; i = i ^ j; j = i ^ j; System.out.println(i); System.out.println(j); } }

當一個數異或兩次相同的數的時候,比如 i ^ j ^ j,那麼結果為這個數本身。

方法二:加減交換

public class Pra {
    public static void main(String[] args) {
        int i = 2;
        int j = 6;
        i 
= i + j; j = i - j; i = i - j; System.out.println(i); System.out.println(j); } }

兩個還挺有趣的小技巧,各位小夥伴考不考慮學一波?