StringBuffer和StringBuilder,String的区别
Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder,它们都可以存储和操作字符串
-
String
一个Java对象,只读字符串,引用的字符串内容不能被改变;如下,str仅仅是一个引用对象,它指向一个字符串对象“abc”。而str = "def"
的含义是让str重新指向了一个新的字符串"def"
对象,而"abc"
对象并没有任何改变,只不过该对象已经是一个不可及对象。
String str = "abc"; str = "def";
-
StringBuffer/StringBuilder(线程不安全)
表示字符串对象可以直接进行修改
-
StringBuilder是Java5中引入的,和StringBuffer的方法完全相同,区别在于它实现单线程环境下使用的,因为它的所有方法都没有被synchronize修饰,因此它的效率理论上也比StringBuffer要高。
-
总结
-
-
String:适用于少量的字符串操作的情况
-
-
-
StringBuffer:适用于多线程下在字符缓冲区进行大量操作的情况
-
-
-
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
-