日期:2014-05-20  浏览次数:20675 次

Java里面两个重载的问题?
1:Java不支持运算符重载,但是像这种表达式s=s1+"James, Bond",
(1):是本身针对String重载了=,而不允许用户自定义运算符重载吗?
(2):还是调用了toString()呢?
2:看书说只有静态函数,常函数和构造函数是静态绑定,难道重载函数是动态绑定的么?
C++函数重载可是静态联编啊

------解决方案--------------------
java中字符串相加其实是调用了StringBuilder的append()方法,实际上s = s1 + “James,Bond”可以转换为s = new StringBuilder(s1).append(“James,Bond”).toString();
------解决方案--------------------
用于String的+和+=是java中仅有的两个重载过的操作符,java是不允许程序员重载任何操作符的!toString()方法是在将一个对象放到字符串上下文时调用的!
java中除了static方法和final方法,其他所有方法都是后期绑定的!
------解决方案--------------------
引用:
java中字符串相加其实是调用了StringBuilder的append()方法,实际上s = s1 + “James,Bond”可以转换为s = new StringBuilder(s1).append(“James,Bond”).toString();

应该是StringBuffer ,StringBuild是C#里面的
------解决方案--------------------
引用:
Quote: 引用:

java中字符串相加其实是调用了StringBuilder的append()方法,实际上s = s1 + “James,Bond”可以转换为s = new StringBuilder(s1).append(“James,Bond”).toString();

应该是StringBuffer ,StringBuild是C#里面的

以前是StringBuffer,现在是StringBuilder
------解决方案--------------------
方法实参很可能在运行期才最终确定,所以动态绑定