1

这是我试图弄清楚发生了什么的代码片段

String line = "Hello";
        for (int i = 0; i < line.length(); i++) {
        char character = line.charAt(i);
        int srcX = 0;
            if (character == '.') {
            }else{
                srcX = (character - '0') * 20;

                System.out.println("Character is " + (character - '0') +"     " + srcX);
            }
        }

并执行该代码将导致此

Character is 24     480
Character is 53     1060
Character is 60     1200
Character is 60     1200
Character is 63     1260

一个字符减去“0”的字符串如何得到整数?系统的答案在哪里有 24、53、60、60、63?

4

2 回答 2

2

您可以减去字符,因为char它是整数类型。

字符的值是其代码点的值(或多或少,由于 Unicode 和 UTF-16 等原因,细节很棘手)。

当您从另一个字符中减去字符“0”时,实际上是在减去 48,即字符 DIGIT ZERO 的代码点。

因此,例如,像 '5' - '0' 这样的值将计算为 53 - 48 = 5。在将包含数字的字符串“转换”为数值时,您通常会看到这种模式。从像“H”(其代码点为 72)这样的字符中减去“0”并不常见,但这是可能的,Java 不在乎。它只是将字符视为整数。

于 2013-04-26T00:56:18.960 回答
0

http://www.ascii.cl/

'0' 是 48 in ascii 'H' 是 72。

因此 72-48 给你 24

于 2013-04-26T00:58:31.313 回答