Java运算符重载字符串+字符

时间:2014-12-10 05:03:08

标签: java operator-overloading

我怀疑,如果我提出错误请纠正我 问题是

        String s="hello";
        String s1=' ';//error
        String s2=s+' ';

我知道line1是正确的,第2行是错误的,因为我们可以初始化char a= ' '; 但我在第3行中感到困惑,我在java中读+运算符可以用于串联串联 但它接受像' '这样的字符是什么原因?

3 个答案:

答案 0 :(得分:4)

+运算符严重超载。它几乎需要任何东西。

如果任何一方是String,那么另一方将转换为String。这适用于char以及其他原始类型。对于对象,调用toString()(在空检查之后)。

答案 1 :(得分:2)

JLS 15.18.1。字符串连接运算符+

如果只有一个操作数表达式是String类型,则对另一个操作数执行字符串转换(第5.1.11节)以在运行时生成字符串。

答案 2 :(得分:1)

JLS 5.4 String Conversion说,

  

字符串转换仅适用于二进制+运算符的操作数,当另一个操作数是字符串时,该操作数不是String。

     

在这个特殊情况下,+的非String操作数转换为字符串(第5.1.11节),+运算符的评估按照§15.18.1的规定进行。