Java中Integer.toOctalString(int i)是静态方法,返回无前缀的八进制字符串:正数如10→"12",负数按32位无符号补码转如-1→"37777777777",0→"0";需手动拼接"0"添加前缀,或用String.format("%o", i)替代。

Java 中并没有 Integer.toOctalString 这个方法,这是常见的误解。标准 JDK 提供的是 Integer.toOctalString(int i) —— 注意是静态方法,属于 Integer 类,不是实例方法,也不能通过对象调用。
正确用法:直接调用静态方法
该方法接收一个 int 类型参数,返回表示其无符号八进制值的字符串(不带前缀,如 "0" 或 "0o"):
- 正数直接转为对应八进制形式,例如
Integer.toOctalString(10)返回"12"(因为 1010 = 128) - 负数按补码处理,转换为 32 位无符号整数的八进制表示,例如
Integer.toOctalString(-1)返回"37777777777"(即 32 个 1 的八进制等价) - 输入为 0 时返回
"0"
注意前缀问题
该方法返回的字符串不含任何前缀(不像 toHexString 也不加 "0x")。如果需要类似 "012" 这样的传统八进制格式(以 0 开头),需自行拼接:
-
"0" + Integer.toOctalString(10)→"012" - 但要注意:对负数拼接 "0" 无实际意义,因结果已是无符号大数
替代方案与兼容写法
除了 Integer.toOctalString,还可使用通用格式化方式:
立即学习“Java免费学习笔记(深入)”;
-
String.format("%o", 10)→"12"(%o表示八进制) -
String.format("%#o", 10)→"012"(%#o自动添加前缀 "0") - 对 long 类型,用
Long.toOctalString(long)或String.format("%o", value)
常见误区提醒
不要写成 new Integer(10).toOctalString() —— 这会编译失败,因为该方法不存在于实例上;也不要误以为它支持 long、short 或自动处理前缀。它只接受 int,且严格按无符号逻辑转换。


















