Stiring,StringBuffer,StringBuilder的比较及其常用方法
来源:互联网 发布:优化媒体和代理媒体 编辑:程序博客网 时间:2024/06/05 13:33
1.java中string和stringbuffer,StringBuilder的区别
1)对于直接相加字符串,效率很高,因为在编译器便确定了它的值,也就是说形如"I"+"love"+"java"; 的字符串相加,在编译期间便被优化成了"Ilovejava"。这个可以用javap -c命令反编译生成的class文件进行验证。
对于间接相加(即包含字符串引用),形如s1+s2+s3; 效率要比直接相加低,因为在编译器不会对引用变量进行优化。
2)String、StringBuilder、StringBuffer三者的执行效率:
StringBuilder > StringBuffer > String
当然这个是相对的,不一定在所有情况下都是这样。
比如String str = "hello"+ "world"的效率就比 StringBuilder st = new StringBuilder().append("hello").append("world")要高。
因此,这三个类是各有利弊,应当根据不同的情况来进行选择使用:
当字符串相加操作或者改动较少的情况下,建议使用 String str="hello"这种形式;
当字符串相加操作较多的情况下,建议使用StringBuilder,如果采用了多线程,则使用StringBuffer。
StringBuilder是StringBuffer的同类,只是是单线程的,不同步,而StringBuffer是同步的,相对比较安全,所以效率相对比较低。
注意:
在使用StringBuilder创建对象时,最好明确给出该字符串的长度,此时直接分配空间,不必再扩容,效率较高(相对于不直接给出字符串的长度)。
eg:StringBuilder sb=new StringBuilder(16); //相当于StringBuilder()
StringBuffer的常用方法
在处理字符串时如果需要用到StringBuffer中的方法,可以 先将其转化为此类型,处理后在调用toString(),转化为相对应的字符串。
a、append方法
public StringBuffer append(boolean b)
该方法的作用是追加内容到当前StringBuffer对象的末尾,类似于字符串的连接。调用该方法以后,StringBuffer对象的内容也发生改变
StringBuffer sb = new StringBuffer(“abc”);
sb.append(true);
则对象sb的值将变成”abctrue”。
b、deleteCharAt方法
public StringBuffer deleteCharAt(int index)
该方法的作用是删除指定位置的字符,然后将剩余的内容形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“Test”);
sb. deleteCharAt(1);
该代码的作用删除字符串对象sb中索引值为1的字符,也就是删除第二个字符,剩余的内容组成一个新的字符串。所以对象sb的值变为”Tst”。
还存在一个功能类似的delete方法:
public StringBuffer delete(int start,int end)
该方法的作用是删除指定区间以内的所有字符,包含start,不包含end索引值的区间。例如:
StringBuffer sb = new StringBuffer(“TestString”);
sb. delete (1,4);
该代码的作用是删除索引值1(包括)到索引值4(不包括)之间的所有字符,剩余的字符形成新的字符串。则对象sb的值是”TString”。
c、insert方法(一般不用效率较低)
public StringBuffer insert(int offset, boolean b)
该方法的作用是在StringBuffer对象中插入内容,然后形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“TestString”);
sb.insert(4,false);
该示例代码的作用是在对象sb的索引值4的位置插入false值,形成新的字符串,则执行以后对象sb的值是”TestfalseString”。
d、reverse方法
public StringBuffer reverse()
该方法的作用是将StringBuffer对象中的内容反转,然后形成新的字符串。例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.reverse();
经过反转以后,对象sb中的内容将变为”cba”。
e、setCharAt方法
public void setCharAt(int index, char ch)
该方法的作用是修改对象中索引值为index位置的字符为新的字符ch。例如:
StringBuffer sb = new StringBuffer(“abc”);
sb.setCharAt(1,’D’);
则对象sb的值将变成”aDc”。
f、trimToSize方法
public void trimToSize()
该方法的作用是将StringBuffer对象的中存储空间缩小到和字符串长度一样的长度,减少空间的浪费。
谢谢阅读!
- Stiring,StringBuffer,StringBuilder的比较及其常用方法
- String、StringBuffer和StringBuilder区别及其常用方法
- String,StringBuffer, StringBuilder类的常用方法
- StringBuffer的主要方法,及其与StringBuilder、String的关系
- 常用对象API(StringBuilder和StringBuffer的比较)
- StringBuffer和StringBuilder常用方法
- StringBuffer与StringBuilder常用方法
- String的"+"-StringBuilder-StringBuffer比较
- String、StringBuffer、StringBuilder的比较
- StringBuffer和StringBuilder的比较
- StringBuffer与StringBuilder的比较
- String、StringBuffer、StringBuilder的比较
- StringBuilder与StringBuffer的比较
- java关于StringBuffer与StringBuilder的常用方法
- 数组第二十三课,StringBuilder和StringBuffer的使用,常用方法
- String StringBuffer StringBuilder 类的区别 和 常用方法
- Java中String, StringBuffer, StringBuilder的区别和常用方法
- java StringBuilder类中的常用方法 及StringBuilder与StringBuffer的区别
- 问题2:Eclipse中Maven-pom聚合项目通过Tomcat自动部署步骤及部分问题
- 0708网络编程
- 算法概论第八章练习题 8.10
- QT 一个widget设置多个tooltips
- spring的事务传播行为及事务隔离级别
- Stiring,StringBuffer,StringBuilder的比较及其常用方法
- 每天10个Linux命令五
- hdu1002 A + B Problem II 大数
- EventBus(事件总线)
- 【HDU 3208】 组合数学+动态规划 湫秋系列故事——安排座位
- Linux下安装scikit-learn教程
- leetcode之Construct Binary Tree from Preorder and Inorder Traversal 问题
- MongoDB3.4配置文件参数选项
- servlet 连接Mysql相关问题