2016-08-31 54 views
0

我正在瀏覽Java問題,然後找到了這個問題。 我無法理解,爲什麼這個代碼 -加寬原始轉換

public class File 
{ 
    public static void main(String[] args) 
    { 
     System.out.println('H'+'I'); 
    } 
} 

輸出爲145 併爲此代碼 -

public class File 
{ 
    public static void main(String[] args) 
    { 
     System.out.print('H'); 
     System.out.print('I'); 
    } 
} 

輸出爲HI。

在第一種情況下,我知道輸出是'H'和'I'的ASCII值的添加,但是對於第二種情況,它不顯示ASCII值,爲什麼? 謝謝!

+0

'H'和'I'分別是一個文字字符值,它是[字符]的基本數據類型(https://docs.oracle.com/javase/8/docs/api/java/lang/Character的.html)。兩種數據類型都使用UTF-16,而不是ASCII。看文檔。 –

回答

2

JLS Sec 15.18描述:

如果+運算的一個操作數的類型是串,則操作是字符串連接。 ...

二元+運算符在應用於兩個數值類型操作數時執行加法運算,產生操作數之和。

在第一種情況下,你有兩個字符(不是字符串),所以他們擴大至整數,並補充說,再傳遞到System.out.print(int)進行打印。

在第二種情況下,您正在調用System.out.print(char)方法,該方法將char作爲字符打印出來。你調用兩次,所以你得到兩個字符。