StringBuilder和StringBuffer还有String的区别

StringBuilder和StringBuffer还有String的区别
String是字符常量,而StringBuilder和StringBuffer是字符变量,所以后者是可以改变的,而前者是不可以改变的String存在JVM的垃圾回收机制

在运行速度上来说
StringBuilder ------>StringBuffer------>String

为什么String运行速度慢?
因为存在垃圾回收机制,String a=“abc” a=a+“afd”; 这种情况下貌似没有创建新的对象,其实上是创建了新的对象
1首先a的值赋值一个新的变量a
2把值赋给新的变量
3把原来创建的a让JVM自动进行垃圾回收
所以对于String的操作来说就是不断的创建对象然后垃圾回收,所以会很慢

StringBuilder 快的原因就是变量,所以会很快,直接对对象进行更改。跟常量是不一样的,但是如果String直接自己进行复制的话要比StringBuilder前很多

StringBuffer要比Stringbuilder安全,原因就是在方法上加了synchronize。所以要安全很多,加了线程安全。

猜你喜欢

转载自blog.csdn.net/qq_43733262/article/details/85064561
今日推荐