gpt4 book ai didi

Java 神秘输出从添加 : some evaluated, 一些打印

转载 作者:搜寻专家 更新时间:2023-11-01 04:02:49 25 4
gpt4 key购买 nike

我在做 java 赋值时遇到了这段代码。

int x=3, y=5;
System.out.println(x + y + " = " + y + x);

输出为“8=53”。为什么第一个 x+y 被评估而最后一个 y 和 x 表达式被打印?让我想知道。提前谢谢大家。

最佳答案

请记住,在 Java 中,运算符(如 +)可以重载。这意味着它会根据其操作数做不同的事情。对于+,有(至少)两种选择:整数加法字符串连接

选择哪个重载更多地取决于左侧操作数。此外,字符串与非字符串操作数的连接会导致自动转换为字符串。

整个事情将像这样从左到右求值:

x + y + " = " + y + x

3 + 5 + " = " + 3 + 5 // 3+5 chooses the integer addition overload of +

8 + " = " + 3 + 5 // 8 + " = " chooses string concatenation
"8" + " = " + 3 + 5 // so 8 is converted to "8" first
"8 = " + 3 + 5 // and then concatenated with " = "

"8 = " + "3" + 5 // now 3 is converted to "3"
"8 = 3" + 5 // and concatenated with "8 ="

"8 = 3" + "5" // finally 5 is converted to "5"
"8 = 35" // and concatenated with the rest

FWIW,就是这样的歧义导致我不喜欢隐式转换1

1 - 在 C# 中。我喜欢 Python :-)

关于Java 神秘输出从添加 : some evaluated, 一些打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26133008/

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