标签:指定 time tchar 原创 不可 开始 run out mem
StringBuffer 其实就是一个存储字符的容器
字符串特点:字符串是常量;它们创建之后不能更改了
字符串一旦发生变化,那么立马创建一个新的对象。
注意:字符串的内容不适合频繁修改的,因为一旦修改马上就会创建一个新的对象但是需要重复修改字符串的内容,建议使用字符串缓冲类(stringBuffer)
笔试题目:使用StringBuffer无参构造器创建一个对象时,默认初始容量多少?如果长度不够使用,自动增长多少倍?
StringBuffer底层依赖字符数组才能存储字符数据,该字符串数组的默认初始容量是16,如果字符数组长度不够用自动增长1倍
2.1、相同点
1.两个类都是字符串缓冲类
2.两个类的方法都是一样的
2.2、不同点
1.StringBuffer是线程安全的,操作效率低,StringBuillder是非线程安全的,操作效率高.
2.StringBuffer出现jdk1.0的,StringBuillder是jdk1.5的时候出现的
推荐使用:StringBuillder,因为操作效率高.
1、String对象是不可变的对象,当我们每次操作string都会重写新建对象来保存值
2、StringBuffer对象一旦实例化,只对这一个对象操作
1 package com.bw.string; 2 3 public class Demo4 { 4 public static void main(String[] args) { 5 String str="abc"; 6 StringBuffer sb=new StringBuffer("abc"); 7 Runtime runtime=Runtime.getRuntime(); 8 long startTime=System.currentTimeMillis(); 9 long startfreeMemory=runtime.freeMemory(); 10 for(int i=0;i<10000;i++){ 11 //str+=i; //运行结果:操作耗时:492ms,内存消耗:8161KB 12 sb.append(i); //运行结果:操作耗时:10ms,内存消耗:147KB 13 //重新再运行的结果也是:StringBuffer的效率比String的高 14 } 15 long endfreeMemory=runtime.freeMemory(); 16 long endTime=System.currentTimeMillis(); 17 18 System.out.println("操作耗时:"+(endTime-startTime)+"ms,"+"内存消耗:"+(startfreeMemory-endfreeMemory)/1024+"KB"); 19 } 20 }
4.1.1、增加
append(boolean b) :可以添加任意类型的数据到容器中
insert(int offset, boolean b):指定插入的索引值,插入对应的内容
4.1.2、删除
delete(int start, int end) :根据指定的开始与结束的索引值删除对应内容
deleteCharAt(int index):根据指定的索引删除一个字符
4.1.3、修改
replace(int start, int end, String str) :
reverse()
setCharAt(int index, char ch) :
substring(int start, int end) :
ensureCapacity(int minimumCapacity):
4.1.4、查看
indexOf(String str, int fromIndex) :
lastIndexOf(String str, int fromIndex) :
capacity() :
length() :
charAt(int index) :
toString():
原创作者:DSHORE 出自:http://www.cnblogs.com/dshore123/ 欢迎转载,转载务必说明出处。(如果本文对你有用,可以点击一下右下角的 推荐,谢谢!) |
标签:指定 time tchar 原创 不可 开始 run out mem
原文地址:https://www.cnblogs.com/dshore123/p/8968801.html