StringBuilder
String类final修饰的不可变字符串类
java.lang.StringBuilder类—一个final修饰的可变的字符序列,
不可变字符串与可变的字符序列????
1.String是一个不可变得字符串,一旦被定义保存数据成功,那么他会在内存中形成一个固定的存储单元,保存的数据将不会改变。
String a="hello";
String b="world";
String c=a+b;
2.StringBuilder所控制的存储空间会随这数据的变化而变化,不会去重新开辟一个新的存储空间,只在第一次开辟存储空间上1进行操作,存储空间中保存的数据值随时可能变化,所以他就是一个可变字符串
String sbuilder = new StringBulider("hello");
sbuilder.append("world");
System.out.println(sbuilder);
注意
:我们在需要很多字符串相互连接时,最好使用StingBuilder类,不要使用String类,因为使用String类会造成空间的浪费.
定义:
public final class StringBuilder
extends Object
implements Serializable, CharSequence //接口
构造方法摘要 | |
---|---|
StringBuilder() 构造一个不带任何字符的字符串生成器,其初始容量为 16 个字符。 | |
StringBuilder(int capacity) 构造一个不带任何字符的字符串生成器,其初始容量由 capacity 参数指定。 | |
StringBuilder(String str) 构造一个字符串生成器,并初始化为指定的字符串内容。 |
package com.Kweilin_Fang.test1;
public class TestClass {
public static void main(String[] args) {
//1.创建StringBuilder类的对象
//构造方法摘要
//StringBuilder() 创建初始容量为16个字符的空对象
StringBuilder sbuilder1=new StringBuilder();
// StringBuilder(int capacity) 创建一个指定初始容量的空对象
StringBuilder sbuilder2=new StringBuilder(30);
//StringBuilder(String str) 通过一个字符串【String】对象创建一个对象
StringBuilder sbuilder3=new StringBuilder("hello");
String info="world";
StringBuilder sbuilder4=new StringBuilder(info);
}
}
常用方法
- StringBuilder append(Object o)向StringBuilder中追加任何类型的数据。
- int capacity()返回当前容量。
- char charAt(int index) 得到指定位置的字符数据
- deleteCharAt(int index)移除此序列指定位置上的 char。
- int indexOf(String str)得到指定的字符串在StringBuilder中第一次出现的位置。
- lastIndexOf(String str)得到指定的字符串在StringBuilder中最后一次出现的位置。
- insert(int offset,Object o)向StringBuilder中的指定位置插入指定数据。
- replace(int start, int end, String str)替换
- reverse()将此字符序列用其反转形式取代。
- String substring(int start)/substring(int start, int end)截取字符串,注意用String变量收取结果。
- toString()将StringBuilder转换成String
package com.Kweilin_Fang.test1;
public class TestClass2 {
public static void main(String[] args) {
// 创建一个空的StringBuilder对象[初始容量16个字符]
StringBuilder sbuilder1=new StringBuilder();
//int capacity()返回当前容量
System.out.println("capacity()返回当前容量===="+sbuilder1.capacity());
//追加数据 append(Object o);
sbuilder1.append("hello");//String
sbuilder1.append(1234);//1234
sbuilder1.append(true);//true
sbuilder1.append(123.4);//123.4
sbuilder1.append('A');//A
System.out.println("sbuilder1===="+sbuilder1.length());//hello1234true123.4A
//当保存在StringBuilder中的数据超过初始容量时,扩张比例【初始容量*2+2】
//下一次扩张也是以此类推扩张比例【上一次扩张容量*2+2】
System.out.println("capacity()返回当前容量===="+sbuilder1.capacity());
System.out.println("charAt(5)=="+sbuilder1.charAt(5));
//deleteCharAt(int index)移除此序列指定位置上的 char。
//System.out.println("deleteCharAt(5)=="+sbuilder.deleteCharAt(5));
//int indexOf(String str)得到指定的字符串在StringBuilder中第一次出现的位置。
System.out.println("indexOf('1234')=="+sbuilder1.indexOf("1234"));
//lastIndexOf(String str)得到指定的字符串在StringBuilder中最后一次出现的位置。
System.out.println("lastIndexOf('e')=="+sbuilder1.lastIndexOf("e"));
//insert(int offset,Object o)向StringBuilder中的指定位置插入指定数据。
System.out.println("insert(9,'world')=="+sbuilder1.insert(9,"world"));
//replace(int start, int end, String str)替换
System.out.println("replace(14,18,'false')=="+sbuilder1.replace(14,18,"false"));
//reverse()将此字符序列用其反转形式取代。1234--4321
//System.out.println("reverse()=="+sbuilder.reverse());
//String substring(int start)/substring(int start, int end)截取字符串,注意用String变量收取结果。
System.out.println("substring(18)=="+sbuilder1.substring(18));
System.out.println("substring(5,9)=="+sbuilder1.substring(5,9));
//toString()将StringBuilder转换成String
String info=sbuilder1.toString();
System.out.println(info);
}
}
StringBuilder与String的转换
-
StringBuilder—>String
1.1通过StringBuilder的toString方法
1.2通过String的构造方法String(StringBuilder builder)
-
String-----》StringBuilder
2.1通过StringBuilder的构造方法StringBuilder(String str)
2.2通过StringBuilder的append方法
**java.lang.StringBuffer–**线程安全的可变字符序列
public final class StringBuffer
extends Object
implements Serializable, CharSequence
构造方法摘要 |
---|
StringBuffer()构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。 |
StringBuffer(int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区。 |
StringBuffer(String str)构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。 |
- StringBuffer append(Object o)向StringBuffer中追加任何类型的数据。
- int capacity()返回当前容量。
- char charAt(int index) 得到指定位置的字符数据
- deleteCharAt(int index)移除此序列指定位置上的 char。
- int indexOf(String str)得到指定的字符串在StringBuffer中第一次出现的位置。
- lastIndexOf(String str)得到指定的字符串在StringBuffer中最后一次出现的位置。
- insert(int offset,Object o)向StringBuffer中的指定位置插入指定数据。
- replace(int start, int end, String str)替换
- reverse()将此字符序列用其反转形式取代。
- String substring(int start)/substring(int start, int end)截取字符串,注意用String变量收取结果。
- toString()将StringBuffer转换成String