从语言一级来看,java不支持运算符重载。String类的"=","+","+=",看似运算符重载,实际不是,只是在java编译器里做了一点手脚。 java编译器对String的运算符做了特殊处理。比如: String s = "s1"; s += "s2"; 编译器转换成了: String s = "s1"; s = (new StringBuilder()).append(s).append("s2").toString();如果你有Java Decompiler(如jad),你可以将一个字符串操作的程序反编译来看看。奥妙就在其中。
STRING不是基本类型
JAVA中没有运算符重载吧
STRING不是基本类型这句话有些奇怪,运算符重载不就是用于类的吗?基本型别重载做什么?HeXuZhOnG(BT,思维中的战斗机) +号用append()也许可以解释,但是等于号呢?不要说是clone()还有== 难道是equals()
String str = new String("abc");
编译时等效于
String str = new StringBuffer().append("a").append("b").append("c").toString();
的值等于
String str = new String("abc");
的值。
Java中不支持运算符重载。+,-,*,/已经可以足够完成常用的操作了,如果什么时候感觉用起来不习惯,大概是没有找到正确的方法哦:)
java编译器对String的运算符做了特殊处理。比如:
String s = "s1";
s += "s2";
编译器转换成了:
String s = "s1";
s = (new StringBuilder()).append(s).append("s2").toString();如果你有Java Decompiler(如jad),你可以将一个字符串操作的程序反编译来看看。奥妙就在其中。