2013-06-25 46 views
3

我有一個看起來像這樣的Java代碼片段:遞增Java中解釋字符

char ch = 'A'; 
    System.out.println("ch = " + ch); 

它打印:一個

然後當我現在做的這個

ch++; // increment ch 
    System.out.println("ch =" + ch); 

它打印:B

我也Z試了一下,結果到[(打開方括號)
-,並導致以.


這是怎麼回事?對此可能的解釋是什麼?提前致謝。

回答

9

對於字符0到127,你跟着ASCII字符集。

enter image description here

正如你可以看到的字符後(90)Z是(91)[和之後(45)-是(46).

字符嘗試

char ch = '-'; 
ch += '-'; // == (char) 90 or 'Z' 

或者更奇怪的是

char ch = '0'; 
ch *= 1.15; // == (char) 48 * 1.15 = 54 or '6' 
+0

所以當我增加'ch'它增加了什麼值?它是'dec,Hx還是'Oct'? –

+0

@ awaw實際上它們都不是。 char是一個16位二進制值,即它有16位。你可以像你所看到的那樣把它顯示爲一個'char',或者將它顯示爲八進制的十進制或十六進制,但實際上它只是一些位的集合。 –

+0

哇!我嘗試了你做過的先生,它的工作,令人驚歎的HAHA。抱歉無知:D仍然學習很多。 –

3

發生這種情況是因爲'char'本質上是一個數字,在Unicode格式中,您鍵入的每個字符都由一個數字表示。這意味着一個角色可以像一個數字那樣對待,因爲一個角色可以被加減或其他任何東西。

有關特定映射的詳細信息,嘗試here

1

char數據類型是一個單一的16位Unicode字符。它的最小值爲'\ u0000'(或0),最大值爲'\ uffff'(或65,535)。算術運算可以在char文字上執行,因爲它們實際上是代表Unicode的數字值。

1

它實際上增加了ascii值。 s值是65,所以66是B.再次,Z的值是90並且[是91

1

Char具有字符的數字表示。如果您試圖將其轉換爲int,如int a = (int) 'A';,您將獲得char代碼。當您遞增char值時,您將在ASCII table中下移,並獲取下一個表值。