区别String、StringBuilder、Stringbuffer的总结

1.三者在执行速度上: StringBuilder > StringBuffer > String

2.  String:不可变长字符串

   StringBuilder : 为可变长字符串

   StringBuffer:为可变长字符串

示例一:String s = "this is a";
        System.out.println(s.hashCode());
        s = s + " apple.";
        System.out.println(s.hashCode());
        System.out.println(s);

乍一看,String类型的字符串,不是也可改变长度吗?实际上,这两个字符串s在内存中不是同一个对象,(hashCode码不一样),第二个s对象是jvm生成的对第一个s对象的拷贝.

3.String s = "this is "+"a simple "+"test";

StringBuilder sb = new StringBuilder("This is ").append("a simple ").append(test);

在这种情况下,貌似生成String字符串的速度比生成StringBuilder的速度要快,但实际上String s = "this is "+"a simple "+"test";本身就是String s = "this is a simple test".

所以不需要太多的时间了。但大家这里要注意的是,如果你的字符串是来自另外的String对象的话,速度就没那么快了,譬如:

    String str2 = “This is only a”;

    String str3 = “ simple”;

    String str4 = “ test”;

    String str1 = str2 +str3 + str4;

4. 线程安全方面:StringBuilder 线程不安全

        StringBuffer 线程安全的

在单线程操作大量数据时使用StringBuilder,多线程操作大量数据时使用StringBuffer。

时间: 2024-10-05 04:19:29

区别String、StringBuilder、Stringbuffer的总结的相关文章

String StringBuilder StringBuffer 区别

String StringBuilder StringBuffer 区别: String 字符串常量 (可用于少量数据,变化不大的情况) 最慢 不可变类(每次改变都会引起创建新的String类) StringBuffer 字符串变量 线性安全(可多线程使用) 居于中间 可变类 StringBuilder 字符串变量 非线性安全(不支持并发操作,可单线程使用) 最快 可变类

String Stringbuilder Stringbuffer的区别

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以

String,StringBuilder,StringBuffer三者的区别

1.三者在执行速度方面的比较:StringBuilder >  StringBuffer  >  String 2.String <(StringBuffer,StringBuilder)的原因 String:字符串常量 StringBuffer:字符串变量 StringBuilder:字符串变量 从上面的名字可以看到,String是"字符创常量",也就是不可改变的对象.对于这句话的理解你可能会产生这样一个疑问  ,比如这段代码: 1 String s = "

String/StringBuilder/StringBuffer之间的区别

String:字符串常量StringBuffer:字符串变量StringBuilder:字符串变量三者在执行速度方面比较:StringBuilder>StringBuffer>String String类型是不可改变的对象,当用String操作字符串时,实际上是不断地创建新的对象,原来的对象就会变成垃圾被GC回收,效率比较低.StringBuffer和StringBuilder是字符串变量,是可以改变的对象,当对字符串操作时,实际上是在一个对象上操作,这样不会像String一样创建一些额外的对

(转)String StringBuilder StringBuffer 对比 总结得非常好

来源:http://blog.csdn.net/clam_clam/article/details/6831345 转自:http://www.iteye.com/topic/522167 作者:每次上网冲杯Java时,都能看到关于String无休无止的争论.还是觉得有必要让这个讨厌又很可爱的String美眉,赤裸裸的站在我们这些Java色狼面前了.嘿嘿.... 众所周知,String是由字符组成的串,在程序中使用频率很高.Java中的String是一个类,而并非基本数据类型. 不过她却不是普通

String StringBuilder StringBuffer 对比 总结得非常好

作者:每次上网冲杯Java时,都能看到关于String无休无止的争论.还是觉得有必要让这个讨厌又很可爱的String美眉,赤裸裸的站在我们这些Java色狼面前了.嘿嘿.... 众所周知,String是由字符组成的串,在程序中使用频率很高.Java中的String是一个类,而并非基本数据类型. 不过她却不是普通的类哦!!! [镜头1] String对象的创建       1.关于类对象的创建,很普通的一种方式就是利用构造器,String类也不例外:String s=new String("Hell

java面试题String,StringBuilder,StringBuffer

面试的经历中,相信大家都经常被问到这三者的区别,说到String我相信绝大多数的人都会说:"String是不可变的,final修饰的",你会看到面试官微微猥琐一笑,接着问到:"final修饰的类就是不可变的吗,那StringBuilder和StringBuffer不是final修饰的?" 1. 先来说说String 看下JDK1.7 String成员变量的源码 /** * @author Lee Boynton * @author Arthur van Hoff *

Java String, StringBuilder, StringBuffer

整理自stackoverflow: Mutability Difference: String is immutable, if you try to alter their values, another object gets created, whereas StringBuffer and StringBuilder are mutable so they can change their values. Thread-Safety Difference: The difference

String ,StringBuilder,StringBuffer

一.String类使用字符数组保存字符串,数组有final修饰,不可变.线程安全 String a="hello";String b=new String("hello"); 第一种在栈内存定义了一个a对象的引用,指向堆内存的值"hello"的内存地址 第二种先在栈内存创建一个"hello"对象,new String又产生了另外一个对象.第一个对象无人引用 上图的解释:String在Java中使用了共享设计,在Java形成一个

【转载】关于Java String, StringBuilder, StringBuffer, Hashtable, HashMap的面试题

REF: http://blog.csdn.net/fightforyourdream/article/details/15333405 题目是一道简单的小程序,像下面这样:[java] view plaincopypublic class Test1 {   public static void main(String args[]) {    String s = new String("Hello");    System.out.println(s);      foo(s);