我們都知道java中,如果char類型和int類型做加減法,那麼char類型會被精度提升至int類型然後參與運算,返回的也是int類型的數據。 那麼如果表達式中參與運算的均為char類型,那麼表達式返回的類型是什麼呢? 'A' - 'a' 經過簡單測試,是int類型。 char c = 'w'; s ...
我們都知道java中,如果char類型和int類型做加減法,那麼char類型會被精度提升至int類型然後參與運算,返回的也是int類型的數據。
那麼如果表達式中參與運算的均為char類型,那麼表達式返回的類型是什麼呢?
'A' - 'a'
經過簡單測試,是int類型。
char c = 'w'; sb.append('A' + c - 'a');
這個問題是在調用StringBuilder.append()方法裡面遇到的,本來期望的是追加一個表達式計算完成後的字元,但是最後追加的是一個兩位的數字。而StringBuilder.append()恰巧重載了多種類型的參數,包括char,ing等,說明匹配到了append(int)方法,如果想追加字元,那麼需要將表達式強制轉換為char類型。
char c = 'w'; sb.append((char)('A' + c - 'a'));