Integer.parseInt()小记(字符串转int)

本文探讨了Integer.parseInt()函数在字符串转int过程中的逻辑,包括进制校验、边界判断以及如何避免整数越界的巧妙处理。通过源码解读,揭示了函数内部对负数、越界情况的精确控制,特别是如何利用limit变量简化边界判断。同时,文章提到了一个可能导致错误的判断语句,并解释了错误产生的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串转int(Integer.parseInt()函数)

在牛客上看到一个字符串转int类型的题目,感觉看上去没什么难度,但是自己做的过程中,对于int越界判断做的较为复杂,翻看了Integer.parseInt()的源码之后,惊叹其清晰的逻辑判断。顺便吐槽下牛客网的测试用例中对于int类型越界判断有些问题,如图:在这里插入图片描述

源码解读:

在这里插入图片描述
默认情况下,我们调用parseInt(String s)函数,其默认为十进制,转而调用parseInt(String s, int radix)方法。再次方法中先如下图所示,对字符串是否为空,进制是否小于2,或大于36进行了格式校验。
在这里插入图片描述
下面是函数中定义的变量:
result:用于记录中间结果及最终结果
negative:标志字符串表示的数字是否为负数
i:记录转换到了第几位,取值从0-len-1
len:记录字符串长度,
limit:记录结果边界,负数进行表示,能够简化在正负边界处绝对值差1的情况判断。(自己写的代码就没有考虑到这点,先求绝对值再加上符号,导致在MAX和MIN处的判断出现错误,无法输出MIN)
multmin:记录中间结果边界
digit:第i位上的字符转换为对应数字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值