问题描述
在leetcode的第415-字符串相加的解题过程中,需要把数字字符转为数字,例如把 char c = '1'
转换为 int i = 1
。
由于char是基本数据类型,可以通过隐式类型转换为int值,且该值为字符对应的ASCll码,因此直接不能直接使用强制类型转换。
char cc = '1';
int i = (int)cc;
System.out.println(i);//49.不是数字1.
解决方式
- 将基本数据类型char装箱为对应类Character,再将类转为字符串,再使用Integer类获取整数值
//1-装箱
Character c = (Character)'2';
//2-类转字符串
String s = c.toString();
//3-调用Integer类的静态方法
//parseInt返回int,valueOf底层调用parseInt,然后再装箱
//因此除非你要返回Integer类型,一般用Integer.parseInt(str),
int i = Integer.parseInt(s);
- 使用Character类的静态方法
Character.valueOf(char c)
这种方法是错误的,返回值是个Character
类型 - 使用Character类的静态方法
Character.getNumericValue(char ch)
,返回值类型为int