Java之String、StringBuffer、StringBulider辨识
来源:互联网 发布:什么是5g网络 编辑:程序博客网 时间:2024/06/05 15:03
1、总引:
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
从这段话中,可以读出两点:
1)在修改自身对象时,String是不可变的,StringBuffer和StringBuilder是可变的;
2)同是可变下,StringBuffer是线程安全的(适用多线程),而StringBuilder则有速度优势(适用单线程)。
2、String和StringBuffer可变和不可变
public static void main(String args[]){ String str = "hello"; StringBuffer strBuffer = new StringBuffer(); strBuffer.append(" world"); System.out.println(str.getClass() + "@" + str.hashCode()); System.out.println(strBuffer.getClass() + "@" + strBuffer.hashCode()); str = "jason"; strBuffer.append(" and jason"); System.out.println(str.getClass() + "@" + str.hashCode()); System.out.println(strBuffer.getClass() + "@" + strBuffer.hashCode());}
结果:String的地址已改变,对象已经改变为另一个;StringBuffer地址不变,还是同样的对象。
class java.lang.String@99162322class java.lang.StringBuffer@131204848class java.lang.String@100897019class java.lang.StringBuffer@131204848
3、适用场景
1)如果要操作少量的数据用 String;
2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;
3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
阅读全文
0 0
- Java之String、StringBuffer、StringBulider辨识
- java之String,StringBulider,StringBuffer的比较
- Java语言基础之String,StringBuffer,StringBulider
- String、StringBulider和StringBuffer
- String ,StringBuffer,StringBulider
- String、StringBulider和StringBuffer
- String,StringBuffer,StringBulider
- String,StringBuffer,StringBulider
- String StringBuffer StringBulider 区别
- String 、StringBuffer、StringBulider
- String、StringBuffer、StringBulider比较
- String 、StringBuffer、StringBulider
- String StringBuffer StringBulider
- String,Stringbuffer,StringBulider区别
- 黑马程序员——五、java基础之String、StringBuffer、StringBulider(8)
- Java基础之数据类型(二)String,StringBulider,StringBuffer区别以及常用API
- java StringBuffer StringBulider 区别
- String,StringBuffer,StringBulider的区别
- 成大事必备9种能力、9种手段、9种心态
- 初用Google App Engine for Java (org.apache.jasper.JasperExceptio; org.datanucleun)
- GetFileName
- vue打包时遇到的问题(Es6)
- 局部内部类访问final局部变量
- Java之String、StringBuffer、StringBulider辨识
- 面试题:如何测试上传和下载?
- HashSet和HashMap
- Android SDK 2.2 开发环境搭建
- ios runtime
- Spark Streaming实战对论坛网站动态行为pv,uv,注册人数,跳出率的多维度分析
- EXCEL教程-根据身份证号得到年龄性别出生日期等信息
- Java基础知识储备
- PAT乙级1020. 月饼 (25)