我有一个看起来像这样的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仍然学习很多。 –