【发布时间】:2019-05-20 13:14:47
【问题描述】:
字符串连接在这里如何工作?
由于这里的返回值是字符串类型,所以一切都应该转换为字符串。但是为什么在这里打印"30Good3040morning",而不是"1020Good3040morning"。请帮忙。
class StringConcatinationWorking{
public static void main(String ...args){
String s1 = 10 + 20 + "Good" + 30 + 40 + "morning";
System.out.println(s1);
}
}
【问题讨论】:
-
不带括号的表达式是根据正常的优先规则计算的,在这种情况下只是从左到右。因此它将首先评估等于 30 的 10 + 20 部分,然后添加“Good”部分,从而产生一个 String 类型。至此,其他所有内容都将添加为字母数字部分。
-
如果你真的需要做这样的连接,我建议使用
StringBuilder。性能只会变得更好(更糟糕的是保持不变),并且会避免您现在遇到的隐式转换问题。 -
10 不是String,是
int,与其他String 连接时转换为字符串 -
因为在 30 之前有一个字符串,所以字符串连接("Good"+30)=Good30 之后 "Good30"+40 将是 "Good3040" 并继续
标签: java string string-concatenation