Java String StringBuffer StringBuilder
来源:互联网 发布:淘宝海报设计价格 编辑:程序博客网 时间:2024/05/21 08:52
一,String保存的字符常量不可改变
看例子:
String a="1";a="2";
此处,先是”1”在内存开辟空间存储,然后a保存的是”1”的地址。在执行a=”2”时,注意不是将a指向地址的内容更换为”2”,而是又开辟了空间存储”2”,然后把新的地址赋给了a。
也就说是,像”1”、”2”、“hello”等字符串常量是不可改变的,而a这种字符串对象保存的值是可以改变的,所以会发生这样的情况。
所以,考虑如下场景,要反复的修改字符串内容,则会反复的在新的地址空间存放新的字符串,最终会占用很多空间,垃圾收集器不得不更加频繁的收集垃圾,导致性能降低。
二,StringBuffer可以修改保存的内容
看例子:
StringBuffer sb=new StringBuffer("1");sb.append("2");
首先sb保存的地址是”1”的地址,第二步时,该地址内容改为“12”,没有使用新的地址。
所以当需要频繁的修改字符串时,建议使用StringBuffer类。
三,StringBuffer与StringBuilder
这两个类的方法是完全一样的,例如常用的:
append(T) 追加insert(int,T) 插入delete(int,int) 删除
唯一的区别是,StringBuffer类中的方法定义使用了synchronized进行修饰,表示StringBuffer中的方法都是同步方法,是线程安全的,而StringBuilder中的方法没有synchronized修饰,属于异步方法,线程不安全的。
老兄,如果不确定或者搞不懂是否需要线程安全,直接用StringBuffer,完事,可想而知安全需要代价,StringBuffer性能稍微差一点点。
OVER!
阅读全文
0 0
- Java String,StringBuilder,StringBuffer
- JAVA String StringBuffer Stringbuilder
- Java String\StringBuffer\Stringbuilder
- Java String StringBuilder StringBuffer
- Java String StringBuilder StringBuffer
- Java String StringBuilder StringBuffer
- Java String StringBuilder StringBuffer
- Java String StringBuffer StringBuilder
- JAVA String StringBuffer StringBuilder
- java String、StringBuffer、StringBuilder
- java: String StringBuffer StringBuilder
- java String, StringBuffer,StringBuilder
- java String StringBuffer StringBuilder
- java string stringbuilder stringbuffer
- Java String、StringBuffer、StringBuilder
- java String stringbuilder stringbuffer
- java String StringBuffer Stringbuilder
- Java String StringBuffer StringBuilder
- 怎么运用spring的IoC思想
- 《搜索引擎优化初学者指南》笔记(二)
- 产品标签功率如何写
- [Java面试六]SpringMVC总结以及在面试中的一些问题.
- 总结
- Java String StringBuffer StringBuilder
- Java集合-HashMap(一)
- 实现Serializable接口的可序列化类中的serialVersionUID的含义
- C# 计算游戏技能攻击区域
- 基于深度学习的Person Re-ID(综述)
- js之script属性async与defer
- Android Studio 快捷键整理分享-SadieYu
- 【Luogu2900】土地征用(斜率优化,动态规划)
- 规范化-数据库设计原则