String,StringBuffer,StringBuilder的区别
来源:互联网 发布:淘宝的鞋子是正品吗 编辑:程序博客网 时间:2024/06/05 15:59
首先String,StringBuffrt,StringBuilder都是用于操作字符串。
我们先说说String:String一种不可变类,即在给String类型的变量重新赋值的时候String的地址也会发生改变,所以会产生新的对象,而String变量的值如果相同,那么地址就是一样,也就是说他们指向都是一样的,所以重新赋值是生成一个新的对象然后指向新的对象。原来的指向的对象将会被当作来及被GC回收掉。
String str = "abc";String str1 = "abc";System.out.println(str == str1);//结果true 比较地址str = "abcd";System.out.println(str == str1);//结果false这种别每次改变Stirng都要生成新的对象,然后在指向新的对象,效率非常低,操作少量字符串的时候可以使用。
再说StringBuffer:StringBuffer是一种可变类,任何改变它都不会生成新的对象,StringBuffer是支持并发操作,线程是安全的。
StringBuffer buffer = new StringBuffer(512);//512缓存字节buffer.append("aaa");System.out.println(buffer.hashCode());//488676694buffer.append("bbb");System.out.println(buffer.hashCode());//488676694//比较两次值其实是相同的两次比较相同,说明了StringBuffer是一种不可变类,没有分配新的地址,没有新的对象,适用于多线程。
然后说StringBuilder:StringBuilder通StringBuffer一样都是不可变类,任何改变都不会生成新的对象,但是StringBuilder是多线程不安全的,单线程StringBuilder比StringBuffer要快一些。
long startTime;long endTime;StringBuffer buffer = new StringBuffer(512);startTime = System.currentTimeMillis();for(int i = 0; i < 10000; i++){buffer.append(i);}endTime = System.currentTimeMillis();System.out.println(endTime -startTime);//结果13StringBuilder builder = new StringBuilder(512);startTime = System.currentTimeMillis();for(int i = 0; i < 10000; i++){builder.append(i);}endTime = System.currentTimeMillis();System.out.println(endTime -startTime);//结果3相比较而言StringBuilder确实比StringBuffer快,String就不比较了,肯定比其他两种更慢
总而言之,对字符串少量操作的时候使用Stiring比较方便,多线程使用StringBuffer,对字符有大量操作的时候但又不在多线程中时候可以使用StringBuilder,不然使用StringBuffer
3 3
- 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,StringBuffer,StringBuilder的区别
- String StringBuffer StringBuilder的区别
- String,StringBuffer,StringBuilder的区别?
- spring基本框架和代码
- JPA映射关联关系-单向一对多
- 匹配滤波(脉冲压缩)
- 实现一个函数,可以左旋字符串中的k个字符
- Apache Shiro-HelloWorld
- String,StringBuffer,StringBuilder的区别
- retina屏幕,适配
- 一些servlet/jsp/el
- 方法 | 帮你培养沉稳气质的三个诀窍
- linux下配置jdk环境变量的几种方法
- GOF设计模式之CHAIN OF RESPONSIBILITY(职责链)
- python读取excel文件中所有sheet表格:openpyxl模块(二)
- String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServe
- 安装opencv2.4.13