You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求详解Java对八进制、十进制、十六进制的处理及代码输出

解释Java中八进制、十六进制整数的输出结果

没问题,我来帮你拆解这段代码的输出逻辑,搞懂Java里八进制和十六进制字面量是怎么转换成十进制输出的~

先看你给出的代码片段:

public class Test { 
    public static void main ( String args[] ) { 
        int a = 10 , b = 017 , c = 0X3A ; 
        System.out.println( a + " " + b + " " + c) ; 
    } 
}

它的输出是:

10 15 58

咱们逐个变量分析:

  • 变量a:int a = 10
    这个是最常见的十进制整数字面量,没有特殊前缀,所以它的值就是十进制的10,输出自然是10。

  • 变量b:int b = 017
    在Java里,以0开头的整数字面量会被识别为八进制数(基数为8)。八进制的每一位只能是0-7,我们把017转换成十进制计算:
    1 * 8^1 + 7 * 8^0 = 8 + 7 = 15
    所以变量b实际存储的十进制值是15,输出就是15。

  • 变量c:int c = 0X3A
    Java里以0X(或小写0x)开头的整数字面量是十六进制数(基数为16)。十六进制里用A-F(或a-f)表示10-15,这里的A对应十进制的10。把0X3A转换成十进制计算:
    3 * 16^1 + 10 * 16^0 = 48 + 10 = 58
    所以变量c实际存储的十进制值是58,输出就是58。

总结一下:不管你用十进制、八进制还是十六进制写整数字面量,Java都会把它们统一转换成十进制的整数存储在int变量中,当你用System.out.println输出时,就会显示对应的十进制数值。

内容的提问来源于stack exchange,提问作者vignesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:27:04