我有一个看起来像这样的 Java 片段:
char ch = 'A';
System.out.println("ch = " + ch);
打印:A
那么当我这样做时
ch++; // increment ch
System.out.println("ch =" + ch);
它现在打印:B
我也试过了Z
,结果是[
(开方括号)
,-
结果是.
这怎么发生的?对此有什么可能的解释?提前致谢。
我有一个看起来像这样的 Java 片段:
char ch = 'A';
System.out.println("ch = " + ch);
打印:A
那么当我这样做时
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 格式,您键入的每个字符都由一个数字表示。这意味着一个字符可以像一个数字一样被处理,一个可以加减或其他任何东西。
有关特定映射的更多信息,请尝试此处
Char
具有字符的数字表示。如果您尝试将其转换为int
喜欢int a = (int) 'A';
,您将获得字符代码。当您增加该char
值时,您将向下移动ASCII table
,并获得下一个表值。
数据类型是char
单个 16 位 Unicode 字符。它的最小值为“\u0000”(或 0),最大值为“\uffff”(或 65,535,包括在内)。可以对char
文字执行算术运算,因为它们实际上是表示 Unicode 的数值。
它实际上是在增加 ascii 值。A s 值为 65,因此 B 为 66。Z 的值再次为 90,[ 为 91