String、StringBuffer 和 StringBuilder的区别

来源:互联网 发布:php接口文档生成工具 编辑:程序博客网 时间:2024/06/06 07:07

 StringStringBuffer StringBuilder

String:是对象不是原始类型。为不可变对象,一旦创建,就不能修改它的值。对于已经存在的String对象修改都是重新创建一个新的对象,然后把新的值保存进去。

String str = “abc”;

str = “def”;

str原来指向的”abc”仍然还是“abc”,只是系统为其创建了一个新的对象“def”,并且str指向它。

 

StringBuffer:是一个可变对象,当对它进行修改的时候,不会像String那样重新建立对象。

只能通过构造函数来建立,并且不能通过赋值符号对他进行赋值,而是要通过append方法对其赋值。

 

StringBuilder类似于StringBuffer,两者的区别是StringBuilder是线程不安全的,StringBuffer是线程安全的。

 

String str = “abc”;

str += “def”;

等同于:

String str = “abc”;

StringBuffer sb =new StringBuffer(str);

sb.append(“def”);

str=sb.toString();

 

对于三者使用的总结: 1.如果要操作少量的数据用 = String

          2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder

         3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

0 0