这工作正常:
int foo = bar.charAt(1) - '0';
但这不是-因为bar.charAt(x)返回一个char:
int foo = bar.charAt(1);
似乎从char中减去‘0’会将其强制转换为整数。
为什么或如何减去字符串“ 0”(或它是一个字符?)将另一个字符转换为整数?
这是一个聪明的把戏。字符实际上与短裤的类型/长度相同。现在,当您有一个表示ASCII / Unicode数字的字符(如“ 1”),并从中减去最小的ASCII / Unicode数字(例如“ 0”)时,将剩下该数字的对应值(因此1)
因为char与short相同(尽管是unsigned short),所以可以安全地将其强制转换为int。如果涉及算术运算,则转换总是自动完成