为什么这样做?所以很有说服力。
答案 0 :(得分:17)
运营商优先级和关联性。
两点:
+
会进行字符串连接。+
从左到右工作。因此,在您的示例中,"Hi"+6
为"Hi6"
,"Hi6"+10
为"Hi610"
。
"16Hi"
。
答案 1 :(得分:3)
这只是一个优先事项。 "Hi"+6+10
解析为("Hi"+6)+10
。由于"Hi"+6
被连接为字符串"Hi6"
,10
再次连接到"Hi610"
要实现您的期望,只需使用大括号正确指定优先级:
System.out.println("Hi" + (6 + 10));
答案 2 :(得分:2)
“6”和“10”被强制成字符串。
你想要“嗨16”吗?在这种情况下,请尝试System.out.println(“Hi ” + (6+10));
答案 3 :(得分:2)
按操作顺序,这相当于System.out.println(("Hi"+6)+10)
。此时,Java规则指出要添加“Hi”和6将两个操作数转换为字符串并连接,产生System.out.println("Hi6" + 10)
,其中“Hi6”+ 10再次根据连接添加给{{1 },将打印System.out.println("Hi610")
到stdout。
答案 4 :(得分:1)
因为它将整数转换为字符串。这就是java字符串连接的工作方式。
这个问题有extensive documentation。你可能想读它。
如果你做6 + 10 +“嗨”,你就会得到16Hi。如果要添加整数,请使用括号。
答案 5 :(得分:1)
6和10被视为int,使用+转换为String。所以,你打印:string + int(tostring)+ int(tostring)
你还期待别的吗?
答案 6 :(得分:0)
你已经遇到了Java中的单个重载运算符 - +
- 并且它意味着什么(字符串连接或添加)的规则不是很明显但很明确。
与往常一样,当优先规则不直观时,请使用括号:
System.out.println("Hi " + (6+10));