我有一个看起来像这样的Java片段:
char ch = 'A';
System.out.println("ch = " + ch);
打印: A
然后我这样做
ch++; // increment ch
System.out.println("ch =" + ch);
现在打印: B
我也尝试使用Z
并生成了[
(开放方括号)
和-
并导致.
这是怎么发生的?可能的解释是什么?提前谢谢。
答案 0 :(得分:9)
对于字符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'
答案 1 :(得分:3)
这是因为'char'本质上是一种数字,采用Unicode格式,其中您键入的每个字符都由数字表示。这意味着角色可以被视为一个数字,因为可以减去或减去其中任何一个。
有关特定映射的详细信息,请尝试here
答案 2 :(得分:1)
char
数据类型是一个16位Unicode字符。它的最小值为'\ u0000'(或0),最大值为'\ uffff'(或65,535(含))。算术运算可以在char
文字上执行,因为它们实际上是表示Unicode的数值。
答案 3 :(得分:1)
它实际上是递增ascii值。 s值为65,因此66为B.再次Z的值为90且[是91
答案 4 :(得分:1)
Char
具有字符的数字表示。如果您尝试将其转换为int
,例如int a = (int) 'A';
,您将获得字符代码。当您递增char
值时,您将在ASCII table
中向下移动,并获得下一个表值。