我怀疑,如果我提出错误请纠正我 问题是
String s="hello";
String s1=' ';//error
String s2=s+' ';
我知道line1是正确的,第2行是错误的,因为我们可以初始化char a= ' ';
但我在第3行中感到困惑,我在java中读+
运算符可以用于串联串联
但它接受像' '
这样的字符是什么原因?
答案 0 :(得分:4)
+
运算符严重超载。它几乎需要任何东西。
如果任何一方是String,那么另一方将转换为String。这适用于char
以及其他原始类型。对于对象,调用toString()
(在空检查之后)。
答案 1 :(得分:2)
JLS 15.18.1。字符串连接运算符+
如果只有一个操作数表达式是String类型,则对另一个操作数执行字符串转换(第5.1.11节)以在运行时生成字符串。
答案 2 :(得分:1)
字符串转换仅适用于二进制
+
运算符的操作数,当另一个操作数是字符串时,该操作数不是String。在这个特殊情况下,
+
的非String操作数转换为字符串(第5.1.11节),+
运算符的评估按照§15.18.1的规定进行。