String、StringBuffer和StringBuilder
来源:互联网 发布:快递怎么找淘宝客户 编辑:程序博客网 时间:2024/06/05 18:30
String类代表字符串,String一旦创建就不能改变,就不能改变,如果需要大量的字符串修改操作,就要到StringBuffer/StringBuilder,或者字符串数组,最终结果会被转换成为String对象。
StringBuffer是线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,通过某些方法调用就能够改变该序列 的长度和内容。
//举一个具体的例子来说明,我们要把1到100的所有数字拼起来,组成一个串。 StringBuffer sbf = new StringBuffer(); for(int i=0;i<100;i++){ sbf.append(i); } //上面的代码效率很高,因为只创建了一个StringBuffer对象 //而下面的代码效率很低,因为创建了101个对象。 String str = new String(); for(int i=0;i<100;i++){ str = str + i; }
StringBuilder是在jdk5以后,为StringBuffer类补充了一个供单个线程使用的等价类。线程是不安全的。
以StringBuilder为例:
String st1= "zxs"; /** * 第一种:如果再次定义一个String st3="zxs"; * 首先会去字符串池里面去看有没有"zxs"这个字符串 * 有的话就直接让st3这个引用指向这个字符串,否则创建一个新的 */ //下面这种,new了几次,就创建了几次,即使创建的字符串的内容相同 String st2=new String("abc"); //StringBuilder sb="abc"; //没有此种声明方式 //StringBuilder sb = new StringBuilder();//默认为16个大小的字符容量 //StringBuilder(int capacity);有这个构造方法,所以可以改变初始的容量大小 //StringBuilder sb = new StringBuilder(100); StringBuilder sb = new StringBuilder(); //常用方法,其余方法可查看API文档 sb.append("hello"); sb.append(10); sb.append(10.6); sb.append(true); System.out.println(sb.length()); //输出字符串的长度 System.out.println(sb.capacity()); //输出容量大小,默认为16 sb.insert(5, "zxs"); //在5的地方插入字符串 System.out.println(sb.toString()); System.out.println(sb.indexOf("z")); //查找字符串 sb.replace(5, 6, "w"); //替换 System.out.println(sb.toString()); System.out.println(sb.reverse()); //倒序输出
1、 在单线程当中,与StringBuffer相比,优先考虑使用StringBuilder类,因为它支持所有相同的操作,但是它不同步,所以速度更快。
举个例子,StringBuffer是一个房间你只能进去一个人,如果第二个人进来,首先会去判断房间里面有没有人,如果有人的话,就会去等待。等第一个人出来。但是StringBuilder的话第二个人来的话不会等待,会推门直接进去。
2、String实现了equals方法,new String(“abc”).equals(new String(“abc”)的结果为true,而StringBuffer没有实现equals方法,所以,new StringBuffer(“abc”).equals(new StringBuffer(“abc”)的结果为false。
0 0
- String 、StringBuffer 和 StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String Stringbuffer和StringBuilder
- String ,StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String StringBuffer和StringBuilder
- String、StringBuffer和StringBuilder
- String和StringBuffer,StringBuilder
- String、StringBuffer和StringBuilder
- String, StringBuffer和 StringBuilder
- String、StringBuffer和StringBuilder
- String、StringBuilder和StringBuffer
- StringBuilder、StringBuffer和String:
- String、StringBuffer和StringBuilder
- 浅识C#
- [POJ3321] Apple Tree 苹果树 - 树状数组
- 【Python】学习笔记——-2.1、Python的数据类型与变量
- JDBC(2):核心类、接口以及实现简单连接
- 前端问题(4)
- String、StringBuffer和StringBuilder
- Charles实现手机抓包
- 关于有向无环图和拓扑排序(摘自算法基础)
- window.name实现的跨域数据传输
- 自学Android之ContentProvider
- 5种IE hasLayoutt的属性及其值
- JPA学习笔记【六】【二级缓存,JPQL】
- JDBC(3):实现DDL、DML、DQL和代码优化
- [caffe笔记005]:通过代码理解faster-RCNN中的RPN