System.out.println(052)
和System.out.println(0x2a)
如何打印42?
这根本与二进制文件有关吗?
答案 0 :(得分:7)
052
是octal(基数为8)的字面值
0x2a
是hexadecimal(基数为16)字面值。
答案 1 :(得分:4)
System.out.println(0x2a)
使用 hex 文字(0x
前缀表示此内容),其小数等值为42
。
System.out.println(052)
使用八进制字面值(前导0
表示此情况),其等效小数为42
。
System.out.println
将根据十进制表示打印整数。如果您想保留十六进制,请尝试System.out.printf("%x\n", 0x2a)
,或者,对于八进制,"%o"
代替"%x"
。
答案 2 :(得分:2)
052
,0x2a
和42
都是编写(十进制,基本 10 )数字 42 的不同方式:
052
是 octal ,或者 8 0x2a
是十六进制,或者 16 42
是熟悉的十进制,基本 10 java允许您使用以下任何格式在代码中使用数字:使用前导0x
指定十六进制,或使用前导零0
指定八进制。
这与二进制文件有关,因为你用java做的任何东西都与二进制文件有关。
顺便说一下,42的二进制,基本 2 表示为:101010
。你也可以在java中使用二进制文字,前面加上0b
,所以0b101010 == 0x2a
。
答案 3 :(得分:1)
052,从0开始,所以它是一个八进制数,因此8 * 5 + 2 = 42 0x2a以0x开头,因此它是十六进制数,因此16 * 2 + a = 32 + 10 = 42
答案 4 :(得分:1)
052
是八进制文字,相当于0 * 8^2 + 5 * 8^1 + 2 * 8^0
。
0x2a
是十六进制文字,相当于2 * 16^1 + 10 * 16^0
。
5 * 8 + 2
和2 * 16 + 10
可以看作是等效的,因为5 * 8
相当于4 * 8 + 8
,而8 + 2
等于10
。< / p>