String,StringBuffer,StringBuilder三者之间的区别
来源:互联网 发布:护肤品行业数据 编辑:程序博客网 时间:2024/06/06 01:44
总结一下: String , StringBuffer , StringBuilder三者之间的区别 String 字符串常量 StringBuffer 字符串变量 线程安全 效率低 StringBuilder 字符串变量 线程不安全 效率高 当我们在字符串缓冲区被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快. 但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作, 所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。 首先由于String是字符串常量一旦赋值不能被修改,因此如果要频繁对字符串进行操作还是不要选用String类型 之前我们经常会遇到这样的例子: String s = " hello"; s = s + "world"; System.out.println(s); 我们觉得这里的字符串变量只有一个s其实不是的当我们对字符串进行修改操作时,其实就会创建一个新的String对象去接收修改后的String对象,原来的字符串就会被垃圾回收器GC回收掉 StringBuffer和StringBuilder就不一样了,他们俩是字符串变量,每次我们对字符串进行操作的时候,都是基于对象本身进行操作,不会像String类型产生新的对象那么麻烦,因此效率更快. 经典例题 String s = " hello" +"world"+"i love you "; StringBuffer sb = new StringBuilder("hello").append("world").append("i love you"); 我们发现第一行代码执行效率比第二行其实这是JVM的一个把戏 第一行 String s = " hello" +"world"+"i love you "; 实际上等同于 String s = "hello world i love you "; > 它只定义了一个字符串因此执行效率肯定高于StringBuffer但是如果这样定义在做字符串拼接时使用的外部的String对象的话进行拼接的效率就不如StringBuffer.> 首先在内存中就会先创建四个String对象,用s4去接收前三个的字符串,然后jvm再将s1,s2,s3回收,这样子的效率明显较低 String s1 = "hello"; String s2 = "world"; String s3 = " i love you"; String s = s1 + s2 + s3; 三者使用总结: 1:如果操作的数据少 -->String 2:单线程操作字符串缓冲区 下操作大量数据 -->StringBuilder 3:多线程操作字符串缓冲区 下操作大量数据 -->StringBuffer
阅读全文
0 0
- String, StringBuffer, StringBuilder 三者之间的区别是什么?
- String,StringBuffer,StringBuilder三者之间的区别
- String&StringBuffer&StringBuilder三者之间的区别-经典解析
- String 与StringBuffer、StringBuilder三者之间的区别
- String StringBuilder StringBuffer 三者之间的区别
- 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 三者的区别
- JDBC连接多个库进行数据操作(常用于数据迁移)
- 图数据库Neo4j安装及入门:
- 正则表达式汇总表
- Docker和虚拟机的区别
- 手把手带你走进MVP +Dagger2 + DataBinding+ Rxjava+Retrofit 的世界
- String,StringBuffer,StringBuilder三者之间的区别
- 无法通过ip访问redis服务
- Vue配置文件详解
- hdu4348 To the moon(区间修改,区间查询的主席树)
- 深拷贝、浅拷贝
- MySQL 加锁处理分析
- springcloud入门之配置中心
- Docker 退出容器但不关闭当前容器
- Oracle中查询表字段基本信息、主键、外键(整理)