java之StringBuffer类详解
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java之StringBuffer类详解,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3751字,纯文字阅读大概需要6分钟。
内容图文
StringBuffer类
这里对java中的StringBuffer类做一个介绍!
知识引入部分:
字符串的特点: 字符串是常量,他们的值在创建之后不能被更改。
字符串的内容一旦发生了变化,那么马上就会创建一个新的对象。
注意: 字符串的内容不适宜频繁的修改,因为一旦修改,马上就会创建一个新的对象。
如果需要频繁的修改字符串的内容,建议使用字符串缓冲类(StringBuffer)。
StringBuffer 其实就是一个存储字符的容器。
案例引入:
public class Demo1 {
public static void main(String[] args) {
String str1 = "hello";
String str2 = str1 + " world";
// 字符串的内容一旦发生了变化,那么马上就会创建一个新的对象。
System.out.println("str1与str2是同一个对象吗?"+(str1 == str2)); //false
}
}
如果需要频繁的修改字符串的内容,建议使用字符串缓冲类(StringBuffer)。
StringBuffer 其实就是一个存储字符的容器。
StringBuffer的构造函数:
1. StringBuffer() 构造一个不带字符的字符串缓冲区,其初始容量为 16 个字符。
2. StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
3. StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
笔试题目: 使用StringBuffer无参的构造函数创建一个对象时,默认的初始容量是多少?如果长度不够用了,自动增长多少?
解答: StringBuffer底层是依赖了一个字符数组才能存储字符数据的,该字符数组默认的初始容量是16,如果字符数组的长度不够使用时,自动增长1倍+2。
StringBuffer常用的方法:
增加:
append(boolean b) 可以添加任意类型的数据的
insert(int offset, boolean b) 指定索引值插入对应的内容
删除:
delete(int start, int end) 根据指定开始与结束的索引值删除对应的内容。
deleteCharAt(int index) 根据指定的索引值删除一个字符。
修改:
replace(int start, int end, String str) 根据指定的开始与结束的索引值把对应的位置替换成相应的内容。
reverse() 反转字符串缓冲类的内容。
setCharAt(int index, char ch) 把指定索引值的字符替换成对应的字符。
substring(int start, int end) 根据指定的索引值截取子串。
ensureCapacity(int minimumCapacity) 指定StringBuffer内部的字符数组长度的。
查看:
indexOf(String str,int fromIndex) 查找指定的字符串第一次出现的索引值,并且指定开始查找的位置。
capacity() 查看当前字符数组的长度
charAt(int index) 根据指定的索引值查找字符
lastIndexOf(String str,int fromIndex)
length() 查看存储的字符个数
toString() 把字符串缓冲类的内容转成字符串返回。
StringBuffer与 StringBuilder的相同处于不同处:
相同点:
1. 两个类都是字符串缓冲类。
2. 两个类的方法都是一致的。
不同点:
1. StringBuffer是线程安全的,操作效率低,StringBuilder是线程非安全的,操作效率高。
2. StringBuffer是jdk1.0出现的,StringBuilder是jdk1.5的时候出现的。
推荐使用: StringBuilder,因为操作效率高。
代码笔记:
public class Demo2 {
public static void main(String[] args) {
// 先使用StringBuffer无参的构造函数创建一个字符串缓冲类。
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("javaabcjavaabcajahd");
/* 添加的方法
stringBuffer.append(true);
stringBuffer.append(3.14f);*/
// 插入的方法
//stringBuffer.insert(2, "小明");
/*//删除的方法
stringBuffer.delete(2, 4); //删除的时候也是包头不包尾
//根据指定的索引值删除一个字符。
stringBuffer.deleteCharAt(3);*/
/*//修改的方法
stringBuffer.replace(2, 4, "陈大富"); //替换字符串对应位置的内容
stringBuffer.reverse(); //反转字符串的内容
stringBuffer.setCharAt(3, '红');
String subString = stringBuffer.substring(2,4);
System.out.println("子串的内容是: "+subString);
stringBuffer.ensureCapacity(20); 指定字符串缓冲类中字符数组的长度。
*/
//查看的方法
int index = stringBuffer.indexOf("abc",0);
System.out.println("索引值为: "+index);
System.out.println("查看字符数组的长度: "+stringBuffer.capacity());
System.out.println("存储的字符个数: "+stringBuffer.length());
System.out.println("根据指定的索引值查找字符: "+stringBuffer.charAt(2));
System.out.println("字符串缓冲类的内容: " + stringBuffer);
test(stringBuffer.toString());
}
//若test方法需要接收一个字符串,这时就需要toString方法把StringBuffer里面的内容转换成字符串返回。
public static void test(String str) {
}
}
分享到此结束!!!
内容总结
以上是互联网集市为您收集整理的java之StringBuffer类详解全部内容,希望文章能够帮你解决java之StringBuffer类详解所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。