integer.tooctalstring() 是 java 中将 int 转八进制字符串的最直接方式,仅支持 int 类型、无前缀,负数按 32 位补码处理;long 等需用对应方法或转换,带前缀或格式化推荐 string.format("%o", n)。

Integer.toOctalString() 是 Java 中将整数快速转为八进制字符串的最直接方式,它内部自动处理符号位与进制转换逻辑,**只适用于 int 类型,且结果不含前缀(如 "0" 或 "0o")**。
基本用法:传入 int 值,返回无前缀八进制字符串
该方法接收一个 int 参数,返回其对应的八进制表示(字符串形式),不带任何前导零或标识符:
- 正数和零正常转换,例如 Integer.toOctalString(10) 返回 "12"(因为 10 = 1×8¹ + 2×8⁰)
- 负数按补码处理,但结果仍是该负数在 32 位整数范围内的八进制表示,例如 Integer.toOctalString(-1) 返回 "37777777777"(即 32 位全 1 的八进制)
- 输入为 0 时,返回 "0"
注意:不支持 long、byte、short 等其他整数类型
该方法仅重载了 int 版本。若你有 long 类型变量,需先确保值在 int 范围内再强转,或改用 Long.toOctalString();byte 和 short 需显式提升为 int(Java 会自动拓宽,但语义更清晰):
- byte b = -5; → Integer.toOctalString(b & 0xFF)(若需无符号解释)或 Integer.toOctalString((int) b)
- long l = 64L; → 若 ≤ Integer.MAX_VALUE,可用 Integer.toOctalString((int) l);否则用 Long.toOctalString(l)
如需带前缀(如 "0" 或 "0o"),需手动拼接
Java 标准库不提供带前缀的八进制字符串生成方法。若协议或显示要求以 "0" 开头(如 C 风格),可自行拼接:
- String octal = "0" + Integer.toOctalString(42); → 得到 "052"
- 注意:对负数拼接前缀意义不大,因结果已是补码八进制,通常负数不用于八进制字面量场景
替代方案:使用 String.format()(更灵活,支持格式化)
如果需要统一格式控制(如固定宽度、补零、或与其他进制混用),推荐用 String.format():
- String.format("%o", 25) → "31"
- String.format("0%o", 8) → "010"(加前缀)
- String.format("%04o", 15) → "0017"(4 位,不足左补 0)
- 支持所有整数包装类型(自动拆箱),也兼容 long(用 %o 或 %Lo)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











