java 中的 Char 变量减去 char 变量解析为 Int

Char variable minus char variable parse to Int in java

我知道这很简单,但我找不到合适的解释。我有以下代码

str="1230"
int rez=str.charAt(3) - '0';
rez=3;

这个解析是如何工作的?

“幕后”a char 只是一个具有特定范围的整数(非常简单的解释)。

尝试使用以下代码说服自己:

System.out.println((int) '0'); // this won't output 0
System.out.println((int) 'a'); // this work as well

这就是为什么可以在 chars 上进行算术运算的原因。

只要字符是数字,减去'0'就可以得到等价的int值。 '0'的ASCII编码是十进制的48'1'是十进制的49,等等

So '8' - '0' = 56 - 48 = 8;

对于你的号码,你可以像这样解析整个字符串(假设所有字符都是数字,否则结果没有意义)。

String v = "1230";
int result = 0; // starting point
for (int i = 0; i < v.length(); i++) {
    result = result* 10 + v.charAt(i) -'0';
}
System.out.println(result);

版画

1230

说明

In the above loop, first time thru
result = 0 * 10 + '1'-'0 = 1
second time thru 
result = 1 * 10  + '2'-'0' = 12
third time thru 
result = 12 * 10  + '3'-'0' = 123
last time thru 
result = 123 * 10  + '0'-'0' = 1230