Java的StringBuffer类详解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java的StringBuffer类详解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3422字,纯文字阅读大概需要5分钟。
内容图文
![Java的StringBuffer类详解](/upload/InfoBanner/zyjiaocheng/608/8ae5a89303864887b0843cc2db9e5976.jpg)
StringBuffer类详解---Java
- 1. String、StringBuffer和StringBuilder区别
- 2. 源码分析
- 3. StringBuffer方法
- 3.1 StringBuffer append ( xxx):提供了很多的 append() 方法 用于进行字符串拼接
- 3.2 StringBuffer delete (int start,int end):删除指定位置的内容
- 3.3 StringBuffer replace (int start, int end, String str):把 [start,end] 位置替换为 str
- 3.4 StringBuffer insert (int offset, xxx):在指定位置插入 xxx
- 3.5 StringBuffer reverse ():把当前字符序列逆转
- 3.6 StringBuffer也包含String的方法
- 4. String、StringBuffer和StringBuilder的效率对比
1. String、StringBuffer和StringBuilder区别
String:不可变的字符序列;底层以char[]存储
StringBuffer:可变的字符序列;线程安全的,效率低;底层以char[]存储
StringBuilder:可变的字符序列;线程不安全的,效率高;底层以char[]存储
[注]:StringBuffer和StringBuilder本质是一样的,只是StringBuffer是线程安全的,而StringBuilder是线程不安全的;两者基本操作都一样
2. 源码分析
// String和StringBuffer的操作对应底层源码操作
String str = new String(); // char[] value = new char[0];
String str1 = new String("abc"); // char[] value = new char[]{'a','b','c'};
StringBuffer sb1 = new StringBuffer(); // char[] value = new char[16];
StringBuffer sb2 = new StringBuffer("abc"); // char[] value = new char["abc".length()+16];
System.out.println(sb1.length()); // 0
sb1.append("a"); // value[0] = 'a';
sb2.append('b'); // value[sb2.length()] = 'b';
3. StringBuffer方法
3.1 StringBuffer append ( xxx):提供了很多的 append() 方法 用于进行字符串拼接
StringBuffer sb1 = new StringBuffer("abc");
sb1.append('a');
sb1.append(3);
sb1.append("def");
System.out.println(sb1);
可以添加任何方式的数据,详情见构造器:
3.2 StringBuffer delete (int start,int end):删除指定位置的内容
StringBuffer sb1 = new StringBuffer("abca3def");
sb1.delete(2, 4);
System.out.println(sb1);
输出:
ab3def
3.3 StringBuffer replace (int start, int end, String str):把 [start,end] 位置替换为 str
StringBuffer sb1 = new StringBuffer("ab3def");
sb1.replace(2, 4, "123");
System.out.println(sb1);
ab123ef
3.4 StringBuffer insert (int offset, xxx):在指定位置插入 xxx
StringBuffer sb1 = new StringBuffer("ab123ef");
sb1.insert(0, 2.3);
System.out.println(sb1);
2.3ab123ef
3.5 StringBuffer reverse ():把当前字符序列逆转
StringBuffer sb1 = new StringBuffer("2.3ab123ef");
sb1.reverse();
System.out.println(sb1);
fe321ba3.2
3.6 StringBuffer也包含String的方法
- public int indexOf (String str)
- public String substring (int start,int end)
- public int length()
- public char charAt (int n)
- public void setCharAt (int n ,char ch)
使用详情见Java的String类方法详解
4. String、StringBuffer和StringBuilder的效率对比
public class StringBufferTest {
/**
* String StringBuffer StringBuilder效率对比
*
*/
@Test
public void test2() {
long startTime = 0L;
long endTime = 0L;
String str = "";
StringBuffer buffer = new StringBuffer("");
StringBuilder builder = new StringBuilder("");
startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
str += i;
}
endTime = System.currentTimeMillis();
System.out.println("String执行时间:" + (endTime - startTime));
startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
buffer.append(i);
}
endTime = System.currentTimeMillis();
System.out.println("StringBuffer执行时间:" + (endTime - startTime));
startTime = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
builder.append(i);
}
endTime = System.currentTimeMillis();
System.out.println("StringBuilder执行时间:" + (endTime - startTime));
}
}
String执行时间:3603
StringBuffer执行时间:6
StringBuilder执行时间:3
内容总结
以上是互联网集市为您收集整理的Java的StringBuffer类详解全部内容,希望文章能够帮你解决Java的StringBuffer类详解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。