首页 > 代码库 > 字符串相加 内存分配
字符串相加 内存分配
问题:
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字符串。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。