你只看到了现象,没有看到本质.String s=s1+s2; 这不是运算符重载,
而是方法重载,JAVA中是可以方法重载的.此句真正实现是用JAVA 中的
append方法,重载的也是append方法,并不是运算符.
请把下面的程序编译后再反编译:
String a = "a ";
String b = "b ";
String c = a + b;
得到的结果是:
String a = "a ";
String b = "b ";
String c = (new StringBuilder(String.valueOf(a))).append(b).toString();
请把下面的程序编译后再反编译:
String a = "a ";
String b = "b ";
String c = a + b;
String d = c + 1;
得到的结果是:
String a = "a ";
String b = "b ";
String c = (new StringBuilder(String.valueOf(a))).append(b).toString();
String d = (new StringBuilder(String.valueOf(c))).append(1).toString();
所以,重载的是 append() 方法。 |