(1)stringbuffer a="1"请问为什么string a="1"就可以,而前面的关于STRINGBUFFER就不能呢?
(2)system.out.print((new stringbuffer("1"))+2)为什么不对呢?而system.out.println("1"+2)就行呢?
(3)请问这种形式可以吗?为什么呢?string c="1"+new stringbuffer("2")
拜托各位前辈给予我指导谢谢大家

解决方案 »

  1.   

    在JAVA中   String 不单单是个类还是个关键字 JAVA编译器重载了=号操作符
    而 StringBuffer 是一个普通的类,
      

  2.   

    1.同楼上所说,StringBuffer是个类,所以只能通过new来定义。
    2.因为StringBuffer是没有"+"这个操作的,故不行。
    3.可以,因为String有“+”这个操作。
      

  3.   

    楼上的估计是学C++的吧,Java没有重载操作符的。
    String s="aaaa";是因为常量池的原因才有的写法,这个论坛里有很多关于String的帖子。可以好好总结总结。
      

  4.   


    好像是我搞错了,Java编译的时候确实对“=”进行了不同的解释。但是自定义操作符是不可能的。也就是说Java对操作符重载是对程序员透明的。
      

  5.   

    String类的"=","+","+=",看似运算符重载,实际不是
    只是在java编译器里做了一点手脚。   
      javac对String的运算符做了特殊处理。   
      比如:   
      String   s   =   "abcd";   
      s   +=   "s2";   
      编译器转换成如下语句:   
      String   s   =   "abcd";   
      s=(new   StringBuilder()).append(s).append("abcd").toString();