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
这就是为什么可以在 char
s 上进行算术运算的原因。
只要字符是数字,减去'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
我知道这很简单,但我找不到合适的解释。我有以下代码
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
这就是为什么可以在 char
s 上进行算术运算的原因。
只要字符是数字,减去'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