Java中如何将多数字与字符串拼接?为何拼接后数字无法相加?
为什么Java中字符串拼接会出现20 Hello 2010这样的结果?
嘿,这个问题其实是Java里字符串拼接的经典细节,核心在于+运算符的左结合性和类型转换规则,咱们一步步拆解就明白啦:
首先得明确Java里+的两种作用:
- 当两边都是数值类型(比如int、long)时,执行数值加法
- 只要其中一边是
String类型,就会触发字符串拼接——此时数值类型会自动转成字符串,和另一边拼接
接下来咱们拆解你给出的代码:
String val = 10 + 10 + " Hello " + 20 + 10;
Java会按照从左到右的顺序依次计算每一步:
- 第一步:
10 + 10→ 两个int类型,执行数值加法,结果是20(int类型) - 第二步:
20 + " Hello "→ 这里出现了String类型,触发字符串拼接:把int的20转成字符串"20",和" Hello "拼接成"20 Hello "(String类型) - 第三步:
"20 Hello " + 20→ 现在左边已经是String类型了,所以把int的20转成字符串"20",拼接后得到"20 Hello 20" - 第四步:
"20 Hello 20" + 10→ 同样,把int的10转成字符串"10",最终拼接成"20 Hello 2010"
而第一个例子10 + 10 + " Hello ",在完成10+10=20后,和字符串拼接就结束了,所以结果是"20 Hello"。
如果想让后面的20+10也执行数值加法,你可以用括号改变运算优先级,比如:
String val = 10 + 10 + " Hello " + (20 + 10);
这样先算括号里的20+10=30,再和前面的字符串拼接,结果就会是"20 Hello 30"啦。
内容的提问来源于stack exchange,提问作者Ramesh C
相关产品推荐
相关产品推荐

