String Stringbuffer Stringbuilder

转载 2015年11月18日 17:24:07
                           String(大姐,出生于JDK1.0时代)          不可变字符序列
                           StringBuffer(二姐,出生于JDK1.0时代)    线程安全的可变字符序列

                           StringBuilder(小妹,出生于JDK1.5时代)   非线程安全的可变字符序列 



StringBuffer和StringBuilder可以算是双胞胎了,这两者的方法没有很大区别。但在线程安全性方面,StringBuffer允许多线程进行字符操作。这是因为在源代码中StringBuffer的很多方法都被关键字synchronized 修饰了,而StringBuilder没有。


有多线程编程经验的程序员应该知道synchronized。这个关键字是为线程同步机制 设定的。我简要阐述一下synchronized的含义:
      每一个类对象都对应一把锁,当某个线程A调用类对象O中的synchronized方法M时,必须获得对象O的锁才能够执行M方法,否则线程A阻塞。一旦线程A开始执行M方法,将独占对象O的锁。使得其它需要调用O对象的M方法的线程阻塞。只有线程A执行完毕,释放锁后。那些阻塞线程才有机会重新调用M方法。这就是解决线程同步问题的锁机制。 
      

 了解了synchronized的含义以后,大家可能都会有这个感觉。多线程编程中StringBuffer比StringBuilder要安全多了 ,事实确实如此。如果有多个线程需要对同一个字符串缓冲区进行操作的时候,StringBuffer应该是不二选择。
      注意:是不是String也不安全呢?事实上不存在这个问题,String是不可变的。线程对于堆中指定的一个String对象只能读取,无法修改。试问:还有什么不安全的呢? 



 本文引用 http://blog.csdn.net/clam_clam/article/details/6831345  想了解更多请点击

String StringBuilder StringBuffer 对比 总结得非常好

转自:http://www.iteye.com/topic/522167 作者:每次上网冲杯Java时,都能看到关于String无休无止的争论。还是觉得有必要让这个讨厌又很可爱的Stri...
  • clam_clam
  • clam_clam
  • 2011年09月28日 19:00
  • 33214

String,StringBuffer,StringBuilder 三者之间的区别是什么?

1.String 字符串产量 2.StringBuffer 字符串变量(线程安全) 3.StringBuilder 字符串变量 (非线程安全) 1.String类型,是java内的对象,...
  • qq_30278639
  • qq_30278639
  • 2016年05月10日 14:09
  • 848

String/StringBuffer/StringBuilder区别

参考:http://blog.csdn.net/rmn190/article/details/1492013 String字符串常量 StringBuffer字符串变量(线程安全) StringBui...
  • pymqq
  • pymqq
  • 2015年07月23日 22:23
  • 596

Java常考面试题7 深刻认识String、StringBuilder、StringBuffer

深刻认识String、StringBuilder、StringBuffer
  • HZ_LIZX
  • HZ_LIZX
  • 2017年02月10日 10:22
  • 507

String,StringBuffer, StringBuilder类的常用方法

一、String类的常用方法1.获取: 1)获取字符串str长度 int i = str.length(); 2)根据位置(ind...
  • zhao_yu_lei
  • zhao_yu_lei
  • 2017年05月12日 13:38
  • 770

Java基础之String、StringBuffer与StringBuilder的区别及应用场景

1 String、StringBuffer与StringBuilder (1)String 字符串常量; /** Strings are constant; their values cann...
  • chenliguan
  • chenliguan
  • 2016年07月14日 18:35
  • 6240

String,StringBuffer,StringBuilder运行速度的比较

1.String 是final对象,不会被修改,每次使用 + 进行拼接都会创建新的对象,而不是改变原来的对象; 2.StringBuffer 可变字符串,主要用于字符串的拼接,属于线程安全的; 3...
  • huwenhu2007
  • huwenhu2007
  • 2014年03月07日 10:03
  • 3413

String、StringBuffer、StringBuilder的区别与效率比较

String 是不可变的,StringBuffer、StringBuilder是可变的 String 、StringBuffer是线程安全的,StringBuilder是线程不安全的 (StringB...
  • u010002184
  • u010002184
  • 2017年05月18日 15:15
  • 416

String/StringBuffer/StringBuilder详细对比

众所周知,String是由字符组成的串,在程序中使用频率很高。Java中的String是一个类,而并非基本数据类型。 不过她却不是普通的类哦!!!   【镜头1】 String对象的创建 ...
  • ls5718
  • ls5718
  • 2016年07月13日 16:12
  • 709

Java中String,StringBuffer,StringBuilder常用方法及使用实例

package stringtest; public class StringOpera { public static void main(String[] args) { Strin...
  • u012768347
  • u012768347
  • 2017年03月12日 16:33
  • 470
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:String Stringbuffer Stringbuilder
举报原因:
原因补充:

(最多只允许输入30个字)