什么是Integer.parseInt()源码
Integer.parseInt()方法的功能
Integer.parseInt()是Java中的一个内置方法,用于将字符串转换为整数类型。它接收一个字符串作为参数,并尝试将该字符串解析成一个整数值。如果成功解析,它将返回对应的整数值;如果解析失败,它将抛出一个NumberFormatException异常。
源码解析
Integer.parseInt()的源码相对比较简单,下面按照不同的步骤来解析它的源码:
步骤一:参数校验
首先,Integer.parseInt()会对传入的字符串参数进行校验,并判断是否为null或空字符串。如果参数为null或空字符串,则会直接抛出一个NumberFormatException异常。
```java
public static int parseInt(String s) throws NumberFormatException {
return parseInt(s,10);
}
```
步骤二:解析字符串
在第一步通过校验后,接下来的步骤就是解析字符串。Integer.parseInt()方法会根据字符串中的字符逐个进行解析,并计算出最终的整数值。解析字符串的过程中,它会忽略字符串前导和尾随的空格。如果字符串中包含非法字符,则会抛出NumberFormatException异常。
```java
public static int parseInt(String s, int radix) throws NumberFormatException {
if (s == null) {
throw new NumberFormatException("null");
}
if (radix < Character.MIN_RADIX) {
throw new NumberFormatException("radix " + radix +
" less than Character.MIN_RADIX");
}
...
}
```
步骤三:根据进制进行计算
在步骤二完成字符串解析后,Integer.parseInt()方法会根据传入的进制参数radix将解析后的字符串转换成对应的整数值。radix参数表示要解析的字符串的进制,可以是2到36之间的任意整数。如果radix不在这个范围内,则会抛出NumberFormatException异常。
代码如下:
```java
public static int parseInt(String s, int radix) throws NumberFormatException {
...
int result = 0;
boolean negative = false;
int i = 0, len = s.length();
int limit = -Integer.MAX_VALUE;
int multmin;
int digit;
if (len > 0) {
char firstChar = s.charAt(0);
if (firstChar < '0') {
if (firstChar == '-') {
negative = true;
limit = Integer.MIN_VALUE;
} else if (firstChar != '+')
throw NumberFormatException.forInputString(s);
} else {
digit = Character.digit(firstChar,radix);
if (digit < 0)
throw NumberFormatException.forInputString(s);
else
result = -digit;
}
multmin = limit / radix;
while (i < len) {
digit = Character.digit(s.charAt(i++),radix);
if (digit < 0)
throw NumberFormatException.forInputString(s);
if (result < multmin)
throw NumberFormatException.forInputString(s);
result *= radix;
if (result < limit + digit)
throw NumberFormatException.forInputString(s);
result -= digit;
}
} else {
throw NumberFormatException.forInputString(s);
}
return negative ? result : -result;
}
```
整个Integer.parseInt()方法的源码解析到此结束。通过调用该方法,我们可以将一个字符串转换为整数类型,并进行进制转换,但需要注意输入的字符串必须符合整数格式,否则会抛出NumberFormatException异常。
猜您想看
-
Spring Cloud Config请求配置时报错Caused by: org.eclipse.jgit.errors.NoRemoteRepositoryException怎么解决
一、什么是Sp...
2023年05月22日 -
在CS:GO游戏中,如何修改选手模式设置?
如何在C...
2023年04月17日 -
什么是Mybatis源码
Mybatis...
2023年07月22日 -
如何进行OpenNI-Linux-Arm64-2.3.0.66安装与调试
一、安装Ope...
2023年05月22日 -
golang刷leetcode技巧之如何实现数字流的秩
如何实现数字流...
2023年07月23日 -
宝塔使用技巧:如何配置防火墙
防火墙在宝塔中...
2023年05月06日