Java的String和StringBuffer的区别及应用场景
来源:互联网 发布:吉他谱制作软件中文版 编辑:程序博客网 时间:2024/04/27 16:25
一、String
String类不是一个原始类型,可以通过它的定义分析。
String类的定义:
private final char value[];
通过String类的定义我们可以看出一旦创建了这个对象,那它的值是不能改变的,对于已存在的String对象的修改实质上是创建一个新的对象,然后把新对象的值存进去。
二、StringBuffer
StringBuffer是一个可变对象,对它的值进行修改不会像String那样重新构造对象。
它只能用构造函数来创建 StringBuffer a = new StringBuffer();
再通过append给它赋值,a.append("Hello");
三、各自的应用场景
字符串连接操作中StringBuffer的效率要比String高: String str = new String("welcome to "); str += "here"; 的处理步骤实际上是通过建立一个StringBuffer,然后调用append(),最后 再将StringBuffer toSting(); 这样的话String的连接操作就比StringBuffer多出了一些附加操作,当然效率上要打折扣.
我们通过一个列子可以看出这个区别;
public class Test { public static void main(String args[]) { String str = "abc"; StringBuffer sb = new StringBuffer("abc"); Runtime runtime = Runtime.getRuntime(); long start = System.currentTimeMillis(); long startFreememory = runtime.freeMemory(); for (int i = 0; i < 10000; i++) { str += i; //测试StringBuffer时候把注释打开 //sb.append(i); } long endFreememory = runtime.freeMemory(); long end = System.currentTimeMillis(); System.out.println("操作耗时:" + (end - start) + "ms," + "内存消耗:" + (startFreememory - endFreememory)/1024 + "KB"); } }
运行结果:
使用String做10000次向一字符串后添加字符串
操作耗时:1872ms,内存消耗:1301KB
使用StringBuffer做10000次向一字符串后添加字符串
操作耗时:15ms,内存消耗:162KB
0 0
- Java的String和StringBuffer的区别及应用场景
- String,StringBuffer与StringBuilder的区别及应用场景
- String,StringBuffer与StringBuilder的区别及应用场景
- String、StringBuilder和StringBuffer的区别和应用场景
- 详解String、StringBuffer和StringBuilder的区别和应用场景
- Java基础之String,StringBuffer与StringBuilder的区别及应用场景
- Java基础之String,StringBuffer与StringBuilder的区别及应用场景
- Java基础之String,StringBuffer与StringBuilder的区别及应用场景
- String、Stringbuilder、Stringbuffer区别及应用场景
- String、StringBuider以及StringBuffer的区别和使用场景
- [Java]_[初级]_[比较String和StringBuffer的区别和使用场景]
- Java面试——String、StringBuider以及StringBuffer的区别和使用场景
- JAVA中String和StringBuffer的区别
- Java中String和StringBuffer的区别
- Java:String和StringBuffer的区别
- String 和 StringBuffer 的区别--[Java]
- Java中String 和StringBuffer的区别?
- java中String和StringBuffer的区别
- android Graphics(四):canvas变换与操作
- 第十一周项目3-职员有薪水了(2)
- hdu 5253
- 【黑马程序员】----java基础---继承、抽象、接口
- android Graphics(三):区域(Range)
- Java的String和StringBuffer的区别及应用场景
- 关于推荐系统中的特征工程
- 【计算机网络】读书笔记之《TCP/IP详解卷1》《图解TCP/IP》《计算机网络》三合一
- 把关闭窗口改为最小化
- Android 2D Graphics学习(二)、Canvas篇2、Canvas裁剪和Region、RegionIterator 分类: Android基础知识学习
- tile地图的组合算法
- 浏览器缓存机制
- Android-Activity状态保存
- 第十一周项目4-点类派生直线类