今天对于一个人发帖,我看一下,想看看关于:
for(int i=0;i<100;i++){
  str = str + i;//(1)不推荐
  sb.append(i+"");//(2)推荐
}我想看一下java的源代码,看对于String 的并接源代码。看看对于第一种情况是不是会有“String->StringBuffered->String”的转换。
好像java的源代码没有哦···

解决方案 »

  1.   

    string的拼接是先另外开辟一个空间,再进行copy
    stringBuffer是直接在末尾追加,所以用stringBuffer效率更高
      

  2.   

    谢谢您的回答,本来我怕我的答案不对,我后来去查了资料 了。确实了我的答案,我在上面说的对了,你看一下,例子,希望对你有助:
    对于String 类,有一个字符串并接,也就是“+”,操作符的运算。
    对于 String s = "a" + "4" + "b";
    等价于:
    String s = new StringBuffered().append("a").append("4").append("b").toString();
    (这里是合并着写)。
      

  3.   

    两点:
    1、想看源码的话,需要导入类的原包,你要是想看String类的,好说不用去下载原包,jdk里自带。鼠标点在String类上按F3或者按住ctrl左键单击,会出来一个窗口,提示你打不开.class文件,你选择右边的第二项,好像是什么“.. a file”,定位到你的原包就行了,自带的原包在jdk根目录下,叫src.zip,不懂的再问我。
    2、我的博客里有关于String类的详细介绍,地址http://blog.csdn.net/zhangerqing。去看看,肯定有你需要的!
      

  4.   

    关于String类API中的确有这样的话
    java语法对字符串连接操作 + 和对象转换字符串提供了特别的支持。字符串连接是使用了Stringbuilder(或者StringBuffer)类和它的append方法。字符串转换通过使用了toString方法,这方法在object中定义,并被所有的java类继承。
    =================================================
    关于+操作是java中仅有的运算符重载,并且是通过编译器实现的。
    http://www.oschina.net/question/129471_37540