首页 > 代码库 > 字符串相加 内存分配

字符串相加 内存分配

 

问题:

String s = "a" + "b" + "c";
      这里,我们先不考虑"a","b","c"是放置在池中这个问题。
      这个"+"操作符,java到底是怎么对待的?
  一种说法是"a"是一个字符串对象,+"b"之后,又生成一个字符串对象,大概是"ab",+"c"之后,再生成一个字符串对象,大概是"abc",
然后,把"abc"字符串对象的引用返回给s。这样,在这个过程中,共有6个字符串对象产生,这样效率低,所以应该用StringBuffer实现,
如:
     StringBuffer sb = new StringBuffer(100);
     sb = sb.append("a").append("b").append("c");
  再有一个说法,是java对“+”操作符进行重载,最终以StringBuffer实现以上字符串相加动作。

 

      实际上

  在java内部的确是对+进行了重载,在处理String的过程中要创建一个StringBuffer对象,用StringBuffer对象的append方法对字符串进行连接,最后调用toString方法返回String字符串。