2013-10-27 56 views
1

這個問題在Google上很難被問到,儘管它很簡單。 基本上我寫了這個:字符數組Java

 public static void main(String[] args) { 
     char cipher[] = {'a','b','c','c','d','t','w'}; 
      System.out.println(cipher[0]+cipher[2]); 
      } 
} 

和println的結果是:196,而不是交流。當然,當我做

System.out.println(cipher[0]+""+cipher[2]); 

它顯示了我的意圖。 所以我的問題是這196個是什麼? 謝謝!

回答

5

所以我的問題是這是什麼196?

它是'a'(它是97)和'c'(它是99)的UTF-16代碼單元的UTF-16代碼單元。

除字符串連接外,加法運算符的操作數會進行二進制數字提升(JLS 5.6.2),因此實際上您正在執行int值的添加。您的代碼相當於:

System.out.println((int) cipher[0] + (int) cipher[2]); 
+0

擊敗我10秒。無論如何...我不會被617k的傢伙打得太失望;) – Izmaki

+0

+1 char是一個無符號的16位整數,當你用'+'將它們加在一起時,你會得到一個int '類型值。 –

+1

@Izmaki一個617k的傢伙!?你的意思是不止一個;) –

0

196是'a'+'c'的ASCII值的ASCII值。

當您將char s一起添加時,沒有任何其他提示,Java會將它們解釋爲數字。

0

在Java中,char本質上是一個無符號的16位整數,其整數值對應於它們的Unicode值。 196是'a'ja'c'的整數表示的總和。

0

結果196是ASCII值de'a'(ASCII 97)+'c'(ASCII 99)。