谈谈自己对java中String、StringBuilder和StringBuffer知识点的理解,也算是对自己学习的记录和总结吧。
-
String字符串常量
-
StringBuffer字符串变量(线程安全)
-
StringBuilder字符串变量(非线程安全)
String
所谓常量,即该对象的值已经被赋予了,不能再更改。若非要更改,则只能再重新创建另一个对象,在这个新创建的对象上再进行赋值。因此,每次在对String类型的对象进行改变的时候其实都等同于生成了一个新的String对象,然后将指针指向新的String对象,所以经常改变内容的字符串最好不要用String,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,JVM的GC就会开始工作,那速度是一定会相当慢的。
StringBuffer
所谓变量,即是可以随时变化的量。如果对StringBuffer对象进行改变,每次结果都会对StringBuffer对象进行操作,而不是生成新的对象。所以一般字符串要经常变化的话使用StringBuffer。
StringBuilder
StringBuilder和StringBuffer类功能基本相似,方法也差不多,主要区别在于StringBuffer类的方法是多线程安全的,而StringBuilder不是线程安全的,相比而言StringBuilder类会略微快一点。