大体思路:
示例,调用Integer类的parseInt()方法;
public static void method() {
String str = "-255";
Integer num = Integer.parseInt(str);
System.out.println(num);
}
默认十进制,也可以手动传其他进制来规定要把str字符串转换成什么进制的数字;
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
下面代码主要思路具体看注释;总结下方法的主要思路:
- 1 参数校验,包括字符串和进制;字符串不为null,进制在[2,36]之间.
- 2 字符串长度不为0,即不为空;否则抛出异常;
- 3 开始处理字符串
- 3.1 取字符串第一位字符,根据字符的ASCII码与‘0’的ASCII码比较判断是否是’+'或者‘-’;
- 3.2 确定正负数后,逐位获得每位字符的int值;(如何实现看下面的分析)
- 3.3 通过*=和-=对各结果进行拼接;
- 4 根据是否是负数返回相应的结果;
public static int parseInt(String s, int radix) throws NumberFormatException{
/*
* WARNING: This method may be invoked early during VM initialization
* before IntegerCache is initialized. Care must be taken to not use
* the valueOf method.
*/
if (s == null) {
throw new NumberFormatException("null");
}
// 进制数最小为2,radix小于最小进制则抛异常
if (radix < Character.MIN_RADIX) {
throw new NumberFormatException("radix " + radix +
" less than Character.MIN_RADIX");
}
// 进制数最大为36,radix大于最大进制则抛异常
if (radix > Character.MAX_RADIX