+不是操作员重载的示例。
+在语言中被内置为合并运算符 和 算术加法运算符。
这意味着用Java编写程序的人不能重载运算符,但是就Java语言的语法而言,它
+被定义为连接和加法运算符。
编辑
它适用于其他类,如
Integer和
Double由于自动装箱。
如果您看一下执行字符串连接的Java程序的字节码,您会发现它创建
StringBuilder并使用了该
append()方法。Java编译器会看到
+运算符,并意识到操作数是字符串而不是原始类型(如
int)。
如果查看执行整数加法的程序的字节码,您会发现它使用
iadd指令执行整数加法。这是因为编译器意识到该操作的
+操作数是整数。
至于做这样的事情
Integer i = 4,字节码会表明你确实在做
Integer i =Integer.valueOf(4)。这称为自动装箱。稍后,当您执行
i +p,
i和
p都为type的操作时
Integer,生成的字节码将显示您正在执行
i.intValue() +p.intValue(),这两个方法的返回类型均为
int(实际的字节码指令为
iadd)。
这就是为什么
+工作
Integer,即使他们不是实际的基本类型。



