StringBuilder的append方法和String+String的区别

如题所述

StringBuilder 是自己的字符串缓冲区,而String没有,String每次进行+运算都会申请新的字符串对象,只要你用了+,他的结果就是 new出来的新字符串。。。
比如string a, 内存是 char[100], string b,的内存是char[50]
那么 a+b的结果就是。
new char[150]; 然后把char[100]和char[50]复制进去然后返回 char[150]。每次都这样,所以这个速度是很慢的,而且很浪费资源,不仅如此,string a=b;也是b复制一个副本给a,而不是引用b。。。
StringBuilder 有自己的存储区,比如他又100个字符,但他存储区是1000,那么Append50,就会写在100到150的位置,而不用new,这就是区别。。。
温馨提示:内容为网友见解,仅供参考
无其他回答

StringBuilder的append方法和String+String的区别
相比String每次+都重新创建一个String对象,重新开辟一段内存不同,StringBuilder和StringBuffer的append都是直接把String对象中的char[]的字符直接拷贝到StringBuilder和StringBuffer的char[]上,效率比String的+高得多。当然,当StringBuilder和StringBuffer的char[]长度不够时,也会重新开辟一段内存。另外,String...

StringBuilder的append方法和String+String的区别
StringBuilder类对字符串连接操作进行了优化,append的效率比直接String+String高。 但是Java编译器对String+String做了优化,String+String操作最终生成的代码就是使用StringBuilder进行字符串连接。

StringBuilder的append方法和String+String的区别
StringBuilder 是自己的字符串缓冲区,而String没有,String每次进行+运算都会申请新的字符串对象,只要你用了+,他的结果就是 new出来的新字符串。。。比如string a, 内存是 char[100], string b,的内存是char[50]那么 a+b的结果就是。new char[150]; 然后把char[100]和char[50]复制...

StringBuilder的append方法和String+String的区别
66: invokevirtual #6 \/\/ Method java\/lang\/StringBuilder.append:(Ljava\/lang\/String;)Ljava\/lang\/StringBuilder;69: invokevirtual #9 \/\/ Method java\/lang\/StringBuilder.toString:()Ljava\/lang\/String;72: astore_3 73: new #2 \/\/ class java\/lang\/StringBuilder 76: dup 77: invoke...

StringBuilder的append方法和String+String的区别
你要分解来看:str = str + "a";而str + "a" 会创建一个新的String对象,就慢了。你要知道String对象一旦创建就是不能被改变的,要达到字符串拼接的效果,就得不停创建新对象。StringBuilder直到最后sb.toString()才会创建String对象,之前都没有创建新对象(在你的例子中是的,但是如果你append的...

StringBuilder的append方法和String+String的区别
当我们通过“+”改变字符串时,原有的字符串实例默认还在内存中,所以内存应用效率不高。而StringBuilder可以避免此类问题,它最终只返回结果字符串实例。如果只是简单的低频率的去改变用“+”来操作就可以,如果频率较高,比较循环遍历里操作改变字符串,还是用StringBuilder的好!

StringBuilder的append方法和String+String的区别
两者性能上差别很大,如果用着字符串连接StringBuilder性能会好很多很多,特别是循环里面操作字符串,你自己可以做一个小示例 要想了解更多,可以追问

java拼接字符串,StringBuilder为什么比String快?
StringBuilder为什么比String快?因为String用+去拼接字符串,每次都要创建新的对象,即newString。而StringBuilder用append()方法拼接字符串,不需要创建新的对象。所以,为什么慢?因为创建对象慢。为什么创建对象慢?因为创建对象要分配内存等等操作。如果只是创建几个对象,还好,不影响,因为基本上没什么区别...

C#string和stringBuffer的区别
对了,区别就在于 String 的调用 concat 方法会新建立一个 String 对象,而 StringBuilder 的 append 方法返回的还是原来对象的应用。String 对象是不可改变的。每次使用 System.String 类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新...

c#中string和stringbuilder的区别
StringBuilder 类型是可变的, 可以通过调用 Append、Insert、Remove 或 Replace 方法来修改字符串。因此, 当需要进行大量字符串操作时,如果使用 string 类型,会产生大量的临时字符串,导致内存空间和性能问题。而使用 StringBuilder 可以避免这些问题.另外,string是值类型,而StringBuilder是引用类型。这就意味着...

相似回答