这样解释吧
char里悉弊族面存的是字符的ascii码
char c='0';
int ic=c;
System.out.println(ic);//输出的结果为48
所以你卜颤例子中sum1+=c-'0' 相当于转换成了ascii码进行的数字运算了,于是就睁弊求出了数字
附一下ASCII码表,相信你一看就明白了
http://baike.baidu.com/link?url=6Tn9IPIdONzrb4yXujBHo2Q6fmUrwjxv0J28xzuqqCdzTVXM0t2_e3rhkoVDKA3z
下顷笑面这个方法可以转换,前提是你的字符内容是数字类型。比如 String str = "123" 或者 char str = '2'
char a = '1';
String b = String.valueOf(a);
int c = Integer.parseInt(b);
上面你说的 c - '0' 这一步应该就是转换格式的 ,我知道类似的在 js 中把一个变量转换成字符森陆串 可以雀春含用 var str = str+""; 加两个引号就相当于格式转换了。
意思就是让字符形式的数字郑埋和字符形式的'0‘相减,因为字符形式的'0'~'9'也是按顺序排列的,即'0'下一个是'1',再下一个是'辩陵2',以此类推,所以用'1'-'0'就等于1(实际是两个字符之间距离为1,但恰好就等于你需要的数字了携丛戚),'6'-’0‘=6,等等等等。
sum1 += c-'0' --> sum1 = sum1+(c - '0')
其中 c-'0' 目的是 让 这个 c 变成 int 类型, 然后 在和 sum1相加
结果 输出时 4
为颤乱什么是4 ???
首先 char c =str.charAt(3) ---->茄斗档 可得销桐出 字符 char c = '4'
然后 c-'0' 就转变为 int 类型的 的 4
然后 sum1 = sum1+4 ----> 0+4 =4
小错误 :String str = '6464154646'; 这里 应该是 String str = "6464154646" ;
望采纳
数字 与 字符转为姿蠢知ascii码的数字 对应的值是不一样的,例如 '0' = 48 '3' = (48+3),c是char类型的,这你该明白为迹消什么要用 c-'档仔0' 了吧