2013-06-25 37 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中下移,并获取下一个表值。