3

我有一个看起来像这样的 Java 片段:

    char ch = 'A';
    System.out.println("ch = " + ch);

打印:A

那么当我这样做时

    ch++; // increment ch
    System.out.println("ch =" + ch);

它现在打印:B

我也试过了Z,结果是[ (开方括号)
-结果是.


这怎么发生的?对此有什么可能的解释?提前致谢。

4

5 回答 5

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'
于 2013-06-25T07:11:35.710 回答
3

发生这种情况是因为“char”本质上是一个数字,采用 Unicode 格式,您键入的每个字符都由一个数字表示。这意味着一个字符可以像一个数字一样被处理,一个可以加减或其他任何东西。

有关特定映射的更多信息,请尝试此处

于 2013-06-25T07:11:00.807 回答
1

Char具有字符的数字表示。如果您尝试将其转换为int喜欢int a = (int) 'A';,您将获得字符代码。当您增加该char值时,您将向下移动ASCII table,并获得下一个表值。

于 2013-06-25T07:13:57.860 回答
1

数据类型是char单个 16 位 Unicode 字符。它的最小值为“\u0000”(或 0),最大值为“\uffff”(或 65,535,包括在内)。可以对char文字执行算术运算,因为它们实际上是表示 Unicode 的数值。

于 2013-06-25T07:11:49.937 回答
1

它实际上是在增加 ascii 值。A s 值为 65,因此 B 为 66。Z 的值再次为 90,[ 为 91

于 2013-06-25T07:12:06.307 回答