用Java连接字符串

Tin*_*iny 1 java string operator-overloading string-concatenation

可能重复:
为什么+使用Java中的字符串?

以下语句在Java中有效.

int a=50;
String tmp="a = ";
String b=tmp+a;
Run Code Online (Sandbox Code Playgroud)

bString类型现在包含a = 50(作为String).

虽然tmp是String类型并且a是类型int,但是进行连接(即使Java不支持运算符重载).

Java不支持运算符重载的原因之一(与其他语言一样.事实上,我对任何语言都没有深度知识).

Java不支持运算符重载.运算符重载有时是C++程序中模糊不清的原因,而Java设计团队认为它会带来更多麻烦而不是利益.

更多关于它.

该声明如何String b=tmp+a;评估?内部必须有一些等效的运算符重载概念.


只有一个问题:我们能从字面上看到它如何实现的,或者我们应该只相信" 它只是语言的一个特征 "?

我听说Java编译器使用StringBuilder/StringBuffer(使用该append()方法)来实现这一点,但我不确定.

Oli*_*rth 5

从技术上讲,这只是一个恰好具有相同符号的不同运算符.它是" 字符串连接运算符 "; 请参阅Java语言规范的第15.18.1节.

关于实施,JLS有这样的说法:

实现可以选择在一个步骤中执行转换和连接,以避免创建然后丢弃中间 String对象.为了提高重复字符串连接的性能,Java编译器可以使用StringBuffer该类或类似技术来减少String通过表达式求值创建的中间对象的数量.

对于基本类型,实现还可以通过直接从基本类型转换为字符串来优化包装对象的创建.