当前位置: 首页 > news >正文

南宁本地网站中国化学工程第九建设公司网站

南宁本地网站,中国化学工程第九建设公司网站,免费精准客户软件,wordpress超级菜单StringBuffer、StringBuilder 文章目录 StringBuffer、StringBuilderStringBuffer和StringBuilder的理解可变性分析对于String对于StringBuilder 常用方法执行效率对比 StringBuffer和StringBuilder的理解 String 不可变的字符序列 StringBuffer 可变的字符序列 JDK1.0声明&…

StringBuffer、StringBuilder

文章目录

  • StringBuffer、StringBuilder
    • StringBuffer和StringBuilder的理解
    • 可变性分析
      • 对于String
      • 对于StringBuilder
    • 常用方法
    • 执行效率对比

StringBuffer和StringBuilder的理解

String 不可变的字符序列

StringBuffer 可变的字符序列 JDK1.0声明,线程安全 , 效率低

StringBuilder 可变的字符序列 JDK5.0声明 ,线程不安全 ,效率高

可变性分析

对于String

String s1 = new String() ; //char[] value = new char[0];
String s2 = new STring("abc");	//char[] value = new char[3]{'a','b,'c'};

对于StringBuilder

char []value;	//存储字符序列
int count;	//实际存储的字符个数
StringBuilder sBuffer1 = new StringBuilder();	//char[] value = new char[16];
StringBuilder sBuffer2 = new StringBuilder("abc");	//char[] value = new char[16 + "abc".length];
sBuffer1.append("ab");	//value[0] = 'a'; value[1] = 'c';
sBuffer1.append("b");	//value[2] = 'b';
//最多修改16个
//一旦count超过value.length时,就需要扩容
//默认扩容为原有容量的2倍 + 2 。 并将原有的value数组中的元素复制到新的数组中
  • 如果开发中,需要频繁的针对于字符串进行 增删改 等操作 ,建议使用StringBuffer StringBuilder替换String

  • 若不涉及线程安全问题,建议使用StringBuffer 替换 StringBuilder

  • 若大体确定需要操作的字符的个数,建议使用int capacity的构造器,避免底层多次扩容操作,效率降低

常用方法

StringBuilder、StringBuffer的API是完全一致的,并且很多方法与String相同。

//常用API1StringBuffer append(xx):提供了很多的append()方法,用于进行字符串追加的方式拼接
(2StringBuffer delete(int start, int end):删除[start,end)之间字符
(3StringBuffer deleteCharAt(int index):删除[index]位置字符
(4StringBuffer replace(int start, int end, String str):替换[start,end)范围的字符序列为str
(5void setCharAt(int index, char c):替换[index]位置字符
(6char charAt(int index):查找指定index位置上的字符
(7StringBuffer insert(int index, xx):在[index]位置插入xx
(8int length():返回存储的字符数据的长度
(9StringBuffer reverse():反转
//其他API1int indexOf(String str):在当前字符序列中查询str的第一次出现下标
(2int indexOf(String str, int fromIndex):在当前字符序列[fromIndex,最后]中查询str的第一次出现下标
(3int lastIndexOf(String str):在当前字符序列中查询str的最后一次出现下标
(4int lastIndexOf(String str, int fromIndex):在当前字符序列[fromIndex,最后]中查询str的最后一次出现下标
(5String substring(int start):截取当前字符序列[start,最后]6String substring(int start, int end):截取当前字符序列[start,end)7String toString():返回此序列中数据的字符串表示形式
(8void setLength(int newLength) :设置当前字符序列长度为newLength
  • StringBuffer append(xx)

    public class StringBufferTest{public static void main(String []args){StringBuilder sBuilder = new StringBuilder();sBuilder.append("abc").append("def");	//方法链调用System.out.println(sBuilder);	//abcdef}
    }
    
  • StringBuffer delete(int start, int end)

     public class StringBufferTest{public static void main(String []args){StringBuilder stringBuilder = new StringBuilder("helloworld");System.out.println(stringBuilder.delete(5, stringBuilder.length()));	//hello}}
    
  • StringBuffer deleteCharAt(int index)

    public calss StringBufferTest{public static void main(String []args){StringBuilder stringBuilder = new StringBuilder("Java");System.out.println(stringBuilder.deleteCharAt(0));  //ava}
    }
    
  • StringBuffer replace(int start, int end, String str)

    public class StringBufferTest{public static void main(String []args){StringBuilder stringBuilder = new StringBuilder("Java");System.out.println(stringBuilder.replace(0, stringBuilder.length(), "helloworld")); //helloworldSystem.out.println(stringBuilder);  //helloworld}
    }
    

执行效率对比

效率排序

StringBuilder > StringBuffer > String

public class RuntimeTest{public static void main(String []args){long startTime = 0L;long endTime = 0L;String text = "";StringBuffer buffer = new StringBuffer("");StringBuilder builder = new StringBuilder("");startTime = System.currentTimeMillis();for (int i = 0; i < 20000; i++) {buffer.append(String.valueOf(i));}endTime = System.currentTimeMillis();System.out.println("StringBuffer运行时间" + (endTime - startTime));startTime = System.currentTimeMillis();for (int i = 0; i < 20000; i++) {builder.append(String.valueOf(i));}endTime = System.currentTimeMillis();System.out.println("StringBuilder运行时间" + (endTime - startTime));startTime = System.currentTimeMillis();for (int i = 0; i < 20000; i++) {text = text + i;}endTime = System.currentTimeMillis();System.out.println("String运行时间" + (endTime - startTime));}
}
//
//StringBuffer运行时间2
//StringBuilder运行时间1
//String运行时间274
http://www.yayakq.cn/news/920443/

相关文章:

  • 土豆网网站开发源代码如何写销售计划书方案
  • 班级同学录网站建设网站开发业务规划
  • 单县住房和城乡建设局网站手机自助建站平台免费
  • 搭建服务器做网站网站模板怎么弄
  • 在线视频网站建设优化一个网站多少钱
  • 微站图片wordpress网站被镜像
  • 高端设计图网站企业网页开发
  • 网站规划设计报告wordpress批量删除字段
  • 站长工具域名查询ip找网站开发公司需要注意那几点
  • vps 网站上传最新网站备案教程
  • 分享信息的网站中国企业信用信息查询网官网
  • 西安市社交网站制作公司个人做论坛网站
  • 四川建设网站信息查询中心安庆网站开发
  • 一站式织梦网站模板青岛注册公司流程
  • 做暧暧暖网站欧美工信部怎么查网站备案
  • 东莞建站精品下载
  • 建设网站的初步需要山东省威海市文登区建设局网站
  • 有哪些做问卷调查赚钱的网站6个人企业注册信息查询
  • 北京微信网站制作费用登录网站后没有转页面
  • 个人网站制作总体设计tv电视盒子企业网站模板
  • 渭南市网站建设免费动漫软件app下载大全
  • 做 爱 网站小视频下载网站及邮件系统建设
  • 济宁做网站优化某一网站seo策划方案
  • 如何设计一个高端网站简洁大方大气自然志 wordpress主题
  • asp网站相册网站互动化
  • 集团网站cms学网站开发怎么样
  • 网站型销售怎么做华为公司邮箱是多少
  • 网站建设基础问题网站工程师平均工资
  • 如何查询网站空间个人博客网站模板源码
  • 网站广告赚钱怎么做网络推广方案怎么做