目录
概述
StringBuffer的构造方法
Stringbuffer的方法
添加功能
删除功能
替换和反转功能
查找功能
截取功能(这两个方法的返回值不再是StringBuffer本身)
StringBuffer和String的相互转换
StringBuffer和StringBuilder的区别
String和StringBuffer分别作为参数传递
- 概述
我们如果要对字符串进行拼接 *** 作,每次拼接都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题。
StringBuffer即线程安全的可变字符序列。
StringBuffer的构造方法//无参构造 public StringBuffer() //指定容量的字符串缓冲区对象 public StringBuffer(int capacity) //指定字符串内容的字符串缓冲区对象 public StringBuffer(String str)
例如:
public class Test { public static void main(String[] args) { //构造StringBuffer对象 //无参构造 StringBuffer stringBuffer = new StringBuffer(); //指定容量 StringBuffer stringBuffer1 = new StringBuffer(20); //指定字符串内容 StringBuffer stringBuffer2 = new StringBuffer("abc"); } }Stringbuffer的方法
返回当前容量:理论值
public int capacity()
返回长度(字符数):实际值
public int length()
代码演示:
public class Test2 { public static void main(String[] args) { // StringBuffer的方法 StringBuffer buffer = new StringBuffer(); System.out.println(buffer.capacity()); System.out.println(buffer.length()); } }添加功能
把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身,
public StringBuffer append(String str)
在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身,
public StringBuffer insert(int offset,String str)
示例1:
public class Test3 { public static void main(String[] args) { // StringBuffer的添加功能 StringBuffer buffer = new StringBuffer(); buffer.append(123).append('a').append((char)98).append("cde"); System.out.println(buffer); } }
示例2:
public class Test4 { public static void main(String[] args) { // StringBuffer的添加功能insert StringBuffer buffer = new StringBuffer(); System.out.println(buffer.insert(0, "abc").insert(1,"abc")); } }删除功能
删除指定位置的字符,并返回本身
public StringBuffer deleteCharAt(int index)
删除从指定位置开始到指定位置结束的字符串,并返回本身
public StringBuffer delete(int start,int end)
示例1:
public class Test5 { public static void main(String[] args) { // StringBuffer的删除功能 StringBuffer buffer = new StringBuffer("abcdefg"); System.out.println(buffer.deleteCharAt(0)); } }
示例2:
public class Test6 { public static void main(String[] args) { // StringBuffer的删除指定字符串功能 StringBuffer buffer = new StringBuffer("abcdefghi"); System.out.println(buffer.delete(1, 3)); } }替换和反转功能
从start开始到end用str替换
public StringBuffer replace(int start,int end,String str)
字符串反转
public StringBuffer reverse()
示例1:
public class Test7 { public static void main(String[] args) { // StringBuffer的替换功能 StringBuffer buffer = new StringBuffer("aBCDefg"); System.out.println(buffer.replace(1, 4, "bcd")); } }
示例2:
public class Test8 { public static void main(String[] args) { // StringBuffer的反转功能 StringBuffer buffer = new StringBuffer("abcde"); System.out.println(buffer.reverse()); } }查找功能
从头查找该字符串,在容器中第一次出现的索引,如果找不到就返回-1.
int indexOf (String str)
从指定索引处开始查找该字符串第一次出现的索引,如果找不到就返回-1
int indexOf (String str,int fromIndex)
从后往前找
int lastIndexOf (String str)
int lastIndexOf (String str,int fromIndex)
示例1:
public class Test9 { public static void main(String[] args) { // StringBuffer 的indexOf(String str)方法和indexOf(String str,int fromIndex)方法 StringBuffer buffer = new StringBuffer("abcjhabclkabc"); System.out.println(buffer.indexOf("abc")); System.out.println(buffer.indexOf("abc", 3)); } }
示例2:
public class Test10 { public static void main(String[] args) { StringBuffer buffer = new StringBuffer("abchjsdgfabckdbfabcjjd"); System.out.println(buffer.lastIndexOf("abc")); System.out.println(buffer.lastIndexOf("abc",buffer.length()-10)); } }截取功能(这两个方法的返回值不再是StringBuffer本身)
从指定位置截取到末尾
public String substring(int start)
截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
public String substring(int start,int end)
示例1:
public class Test11 { public static void main(String[] args) { // StringBuffer的从指定位置截取到末尾功能 StringBuffer buffer = new StringBuffer("abcdef"); System.out.println(buffer.substring(3)); } }
示例2:
public class Test12 { public static void main(String[] args) { // StringBuffer的截取从指定位置开始到结束位置,包括开始位置,不包括结束位置 StringBuffer buffer = new StringBuffer("abcdefghijk"); System.out.println(buffer.substring(1, 5)); } }StringBuffer和String的相互转换
String --> StringBuffer
1. 通过构造方法 2. 通过append()方法
StringBuffer --> String
StringBuffer和StringBuilder的区别1. 使用substring方法 2. 通过构造方法 3. 通过toString()方法
1、StringBuffer多线程安全的,StringBuilder多线程不安全
2、StringBuffer从JDK1.0就有了,StringBuilder是JDK5.0才出现
String和StringBuffer分别作为参数传递String
String是引用类型,但是它是一个常量,在作参数传递的时候,完全可以将其看成基本数据类型类型数据进行传递。所以String类型属于值传递,不改变其值。
StringBuffer
作为引用数据类型传递,改变其值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)