- String
String str = "abc";
str = str + "de";
先创建一个String对象str,并把“abc”赋值给str,然后在第二行中,其实JVM又创建了一个新的对象也名为str,然后再把原来的str的值和“de”加起来再赋值给新的str,而原来的str就会被JVM的垃圾回收机制(GC)给回收掉了,所以,str实际上并没有被更改,也就是前面说的String对象一旦创建之后就不可更改了。所以,Java中对String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢。
- StringBuilder
为变量,但是不是线程安全的
- StringBuffer:
为变量,线程安全的,其中方法都加Synchronize关键字
- 执行速度
单线程中:StringBuilder > StringBuffer > String
网友评论