我有一個看起來像這樣的Java代碼片段:遞增Java中解釋字符
char ch = 'A';
System.out.println("ch = " + ch);
它打印:一個
然後當我現在做的這個
ch++; // increment ch
System.out.println("ch =" + ch);
它打印:B
我也Z
試了一下,結果到[
(打開方括號)
與-
,並導致以.
這是怎麼回事?對此可能的解釋是什麼?提前致謝。
我有一個看起來像這樣的Java代碼片段:遞增Java中解釋字符
char ch = 'A';
System.out.println("ch = " + ch);
它打印:一個
然後當我現在做的這個
ch++; // increment ch
System.out.println("ch =" + ch);
它打印:B
我也Z
試了一下,結果到[
(打開方括號)
與-
,並導致以.
這是怎麼回事?對此可能的解釋是什麼?提前致謝。
對於字符0到127,你跟着ASCII字符集。
正如你可以看到的字符後(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'
發生這種情況是因爲'char'本質上是一個數字,在Unicode格式中,您鍵入的每個字符都由一個數字表示。這意味着一個角色可以像一個數字那樣對待,因爲一個角色可以被加減或其他任何東西。
有關特定映射的詳細信息,嘗試here
char
數據類型是一個單一的16位Unicode字符。它的最小值爲'\ u0000'(或0),最大值爲'\ uffff'(或65,535)。算術運算可以在char
文字上執行,因爲它們實際上是代表Unicode的數字值。
它實際上增加了ascii值。 s值是65,所以66是B.再次,Z的值是90並且[是91
Char
具有字符的數字表示。如果您試圖將其轉換爲int
,如int a = (int) 'A';
,您將獲得char代碼。當您遞增char
值時,您將在ASCII table
中下移,並獲取下一個表值。
所以當我增加'ch'它增加了什麼值?它是'dec,Hx還是'Oct'? –
@ awaw實際上它們都不是。 char是一個16位二進制值,即它有16位。你可以像你所看到的那樣把它顯示爲一個'char',或者將它顯示爲八進制的十進制或十六進制,但實際上它只是一些位的集合。 –
哇!我嘗試了你做過的先生,它的工作,令人驚歎的HAHA。抱歉無知:D仍然學習很多。 –