integer.decode() 支持 0x/0x、#(十六进制)、0(八进制)、无前缀(十进制),不支持 0b(二进制);需注意空格、数字合法性、范围限制,推荐配合 trim() 和异常处理使用。

Integer.decode() 是 Java 中一个方便的方法,能自动识别并解析带进制前缀的字符串(如 0x 十六进制、0 开头的八进制、# 开头的十六进制),直接转为对应的 int 值。
支持的前缀格式及对应进制
该方法内部会按顺序尝试识别以下前缀:
-
0x或0X→ 十六进制(base 16) -
#→ 十六进制(base 16),这是 Java 特有的兼容写法(如 CSS 风格) -
0(单独一个前导零,且后续字符为有效八进制数字)→ 八进制(base 8) - 无前缀 → 默认十进制(base 10)
注意:0b(二进制)前缀不被 Integer.decode() 支持,它会抛出 NumberFormatException。如需解析二进制,应改用 Integer.parseInt(s, 2)。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
基本用法示例
直接传入含前缀的字符串即可:
System.out.println(Integer.decode("0xFF")); // 255<br>System.out.println(Integer.decode("#FF")); // 255<br>System.out.println(Integer.decode("077")); // 63(八进制 77 = 十进制 63)<br>System.out.println(Integer.decode("123")); // 123(十进制)<br>System.out.println(Integer.decode("-0x10")); // -16(支持负号)
常见陷阱与注意事项
- 前导空格会导致解析失败(
NumberFormatException),建议先trim() - 八进制只认纯数字
0-7;若出现8或9,即使以0开头也会报错 -
0x后必须跟至少一个合法十六进制字符(0-9、a-f、A-F),否则异常 - 不能解析科学计数法或带小数点的字符串(如
"0x10.5"不合法) - 结果范围必须在
int范围内(-2³¹到2³¹−1),超限也抛异常
安全使用的推荐写法
生产环境中建议包裹异常处理,并做空值/空白校验:
public static Integer safeDecode(String s) {<br> if (s == null || s.trim().isEmpty()) return null;<br> try {<br> return Integer.decode(s.trim());<br> } catch (NumberFormatException e) {<br> return null; // 或记录日志、抛自定义异常<br> }<br>}
这样可避免因非法输入导致程序中断,同时保留对各种进制前缀的自动识别能力。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










