当+;运算符在Java中的两个字符串对象之间使用?
Java不支持用户定义的重载运算符。Java允许在两个字符串对象之间使用+运算符。发生这种情况时,+是否会发生一些内部/内置重载,或者会发生什么情况,以便使用++添加两个字符串对象?运算符不会重载。当+;运算符在Java中的两个字符串对象之间使用?,java,Java,Java不支持用户定义的重载运算符。Java允许在两个字符串对象之间使用+运算符。发生这种情况时,+是否会发生一些内部/内置重载,或者会发生什么情况,以便使用++添加两个字符串对象?运算符不会重载。+运算符的行为在,部分中有明确定义: 运算符+和-称为加法运算符 如果+运算符的或操作数的类型为字符串,则该操作为字符串串联 第二节接着说: 如果只有一个操作数表达式的类型为String,则在运行时对另一个操作数执行字符串转换() 字符串串联的结果是对两个操作数字符串串联而成的string对象的引用。
+
运算符的行为在,部分中有明确定义:
运算符+
和-
称为加法运算符
如果+
运算符的或操作数的类型为字符串
,则该操作为字符串串联
第二节接着说:
如果只有一个操作数表达式的类型为String
,则在运行时对另一个操作数执行字符串转换()
字符串串联的结果是对两个操作数字符串串联而成的string
对象的引用。在新创建的字符串中,左操作数的字符位于右操作数的字符之前
“+”运算符(在此上下文中)不是“重载的”,它是预定义的运算符,称为字符串连接运算符
15.18.1字符串串联运算符+
如果只有一个操作数表达式为String类型,则在运行时对另一个操作数执行字符串转换(§5.1.11),以生成字符串。
字符串连接的结果是对字符串对象的引用,该对象是
两个操作数字符串的串联。左侧操作数的字符
在新创建的字符串中右操作数的字符之前
换句话说,当Java看到
String res = stringObj + someObj;
它使用代码替换表达式,该代码通过将现有字符串值与someObj.toString()
串联,来构造生成的字符串
参考资料:阅读此。。。。顺便说一句,在这种情况下调用的实际实现已经更改了几次,同时在编译器和JIT中进行了高度优化,因此它不仅易于阅读,而且通常比自己处理StringyBuilder append更快。唯一的例外是,如果在多个语句或循环迭代中发生连接。