以下是我试图弄清楚发生了什么的代码片段
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?
答案 0 :(得分:2)
您可以减去字符,因为char
是整数类型。
字符的值是其代码点的值(或多或少,由于Unicode和UTF-16以及所有这些,细节很棘手。)
当你从另一个字符中减去字符'0'时,你基本上减去48,即字符DIGIT ZERO的代码点。
因此,例如,类似'5' - '0'的东西将评估为53 - 48 = 5.当将包含数字的字符串“转换”为数值时,通常会看到此模式。从像'H'(其代码点为72)这样的字符中减去'0'并不常见,但它可能并且Java不关心。它只是处理整数等字符。
答案 1 :(得分:0)