Java,运算符重载和" +" String的运算符

时间:2015-03-16 18:31:03

标签: java string operator-overloading

我怀疑Java中的运算符重载。我知道Java不支持运算符重载,但是接下来有效的Java程序中的“+”运算符是什么:

import java.util.*;
import java.lang.*;
import java.io.*;

class OperatorOverloadingTest
{
    public static void main (String[] args) throws java.lang.Exception
    {
        String str1 = "Operator ";
        String str2 = "overloading";
        String str3 = str1+str2;

        System.out.println(str3);
    }
}

Stdout:
Operator overloading

1 个答案:

答案 0 :(得分:2)

此运算符不是“重载”,它是预定义的运算符,称为字符串连接运算符

  

15.18.1字符串连接运算符+

     

如果只有一个操作数表达式是String类型,则对另一个操作数执行字符串转换(第5.1.11节)以在运行时生成字符串。   字符串连接的结果是对String对象的引用   两个操作数字符串的串联。左手操作数的字符   在新创建的字符串中的右侧操作数的字符之前。

换句话说,当Java看到

String res = stringObj + someObj;

它将表达式替换为通过将现有字符串值与someObj.toString()连接来构造结果字符串的代码。