请求详解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
相关产品推荐
相关产品推荐

