Python Puzzler 12: ABC

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

底下的Java程式碼會有什麼結果?
1
2
3
4
5
6
7
public class Abc {
    public static void main(String[] args) {
        String letters = "ABC";
        char[] numbers = { '1', '2', '3' };
        System.out.println(letters + " easy as " + numbers);
    }
}

使用JDK11.0.2的結果為 ABC easy as [C@5c8da962 。這是因為 numbers 是 ,而字元陣列會呼叫Object的toString(),但我們沒有將toString() method 給 Overwrite,於是會得到一組Hash code的數值。     

那我們來看看在Python裡,會有什麼結果?
1
2
3
letters = "ABC"
numbers = { '1', '2', '3' }
print(letters + " easy as " + numbers)

上述的程式碼會得到下面的錯誤訊息:
1
2
    print(letters + " easy as " + numbers)
TypeError: can only concatenate str (not "set") to str

這是因為在 Python 裡,{ '1', '2', '3' } 會是集合(set)的語法。而且因為 letters 是str,所以 + 會被當成字串合併來執行。

沒有留言: