Java字符与整形的转换问题
博主在练习大数加法时,用到了字符数组相加的问题,自己研究了段时间总结下经验,希望能对大家有所帮助
两字符直接相加结果为两字符的ascii
码值相加
例:
int a = '0' + '1';
输出结果为97
。
强制转换后也是ascii
码相加
例:
int a = (int)'0' + (int)'1';
输出结果仍为97
。
0
ascii码值为48,1
ascii码值为49
两字符变量强制转换或不转换都为对应的int值相加
例:
char c1 = '0';
char c2 = '1';
int a = c1 + c2;
int b = (int)c1 + (int)c2;
结果a、b都为97
。
函数的形参相加结果和两字符相加相同
例:
public static int plus1(char c1, char c2) {
return c1 + c2;
}
public static int plus2(char c1, char c2) {
return (int)c1 + (int)c2;
}
结果都为97
。
字符数组中取出单个值结果与字符相加相同
例:
char[] c = {'1', '2'};
int a = c[0] + c[1];
结果为97
。
获得一个char
对应int
可以采用以下方式
方法1:
Integer.parseInt(String.valueOf('1'));
方法2:
char c = '1';
int a = c - '0';
将int
型变量转换为对应char
型变量
//注意使用该方法int值不能大于9
char c = '1';
int a = (char)(c + ‘0’);
总结:
int型转换成char型,直接强制转换是转换成该int值ascii码对应的字符>想要取得对应整型值,可以使用该字符减去
0
字符或解析成整形
而对应int
型转换成char
型也可以使用该整型加上0
字符