gpt4 book ai didi

java - 为什么 int 会发生这种情况?

转载 作者:行者123 更新时间:2023-12-01 06:44:05 24 4
gpt4 key购买 nike

当我这样做时,我在 Java 中观察到:

public static void main(String[] args){
int i = 45;
int j = 045;

System.out.println("i:>>"+i);
System.out.println("j:>>"+j);
}

输出为:

i:>>45
j:>>37

为什么会发生这种情况? j的值打印为 37当它是45时?

有人可以指导一下吗?提前致谢。

最佳答案

045 是八进制(基数 8):

8^2 * 0 + 8^1 * 4 + 5 = 37

45 是十进制(基数 10)。

<小时/>

尝试运行这个:

int j = 049;
System.out.println("j:>>" + j);

您将得到“int 类型的文字 049 超出范围”,因为八进制数字只能包含从 07 的数字>(这就是为什么它是基8的原因)。

编辑:

正如 @Gleen 在评论中提到的,十六进制以 0x 开头:

int j = 0x111; // 16^2 * 1 + 16^1 * 1 + 1 = 273
System.out.println("j:>>" + j);

输出:

j:>>273 

关于java - 为什么 int 会发生这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21325094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com