StringBuffer:字符串缓冲区 ----类似于String,但是不一样 (可变的字符序列)
-
线程安全
线程依赖于进程存在!进程,能够被系统资源调用的独立单位 一个进程可以有多个线程,每一个线程-----"执行单元"(任务)
-
线程安全-----同步的-----执行效率低
举例: 银行类的网站/医疗网站 ATM机取钱---插卡---输入密码---查询余额---取钱 StringBuilder:和StringBuffer具有相互兼容的API,它是线程不安全的类----不同步----执行效率高
添加功能:
append(任何类型) :将内容追加到字符串缓冲区中 (在字符串缓冲区的最后一个字符序列的末尾追加) 返回值是字符串缓冲区本身.
public StringBuffer insert(int offset,String str):插入:在指定位置处插入指定的内容
public class StringBufferDemo {
public static void main(String[] args) {
//创建一个字符串缓冲区对象
StringBuffer sb = new StringBuffer() ;
//StringBuffer append(任何类型)
sb.append("hello").append("world").append(100).append('a').append(12.34) ;
System.out.println("sb:"+sb);
System.out.println("----------------------------------");
//public StringBuffer insert(int offset,String str)
//插入
sb.insert(5,"高圆圆") ;
System.out.println("sb:"+sb);
}
}
删除功能
public StringBuffer deleteCharAt(int index):删除指定索引处的缓冲区的字符序列,返回字符串缓冲区本身
public StringBuffer delete(int start,int end):删除从指定位置到指定位置结束的字符序列(包含end-1处的字符),返回字符串缓冲区本身
[start,end-1]
public class StringBufferDemo2 {
public static void main(String[] args) {
//创建一个StringBuffer对象 (默认初始容量16)
StringBuffer buffer = new StringBuffer() ;
buffer.append("hello").append("world").append("Javaee") ;
System.out.println(buffer);
System.out.println("---------------------------");
System.out.println("delete():"+buffer.delete(5,10));//5-9
}
}
类型的相互转换(重点)
开发中:
(1)本身A类型,由于需要使用B类型的功能,所以 A类型---->B类型
(2)A类型,需要使用B类型的功能,A--->B类型,使用完功能之后,又可能结果又需要A类型,
B类型---->A类型
String---->StringBuffer
StringBuffer---->String
StringBuffer的特有功能
public StringBuffer reverse(),反转之后,返回的是字符串缓冲区本身
键盘录入一个字符串,将字符串进行反转
public class StringBufferDemo4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in) ;
System.out.println("请您输入一个字符串:");
String line = sc.nextLine()
StringBuffer sb = new StringBuffer(line) ;
String result = sb.reverse().toString();
System.out.println(result);
}
}
使用功能改进
public class StringBufferDemo4 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in) ;
System.out.println("请您输入一个字符串:");
String line = sc.nextLine() ;
//调用功能
String result2 = reverse(line);
System.out.println(result2);
}
/**
* reverse反转功能
* @param s 将指定的字符串反转
* @return 返回结果字符串
*/
public static String reverse(String s){
//方式1:s---->StringBuffer类型---->有参构造
StringBuffer buffer = new StringBuffer(s) ;
return buffer.reverse().toString() ;
//方式2:append()+空参构造方法
/*StringBuffer buffer = new StringBuffer() ;
String result = buffer.append(s).reverse().toString();
return result ;*/
//方式三:匿名对象
//return new StringBuffer().append(s).reverse().toString() ;
}
}
StringBuffer的截取功能
1.public String substring(int start):从指定位置开始,默认截取到末尾,返回值是新的字符串
2.public String substring(int start,int end):从指定位置开始到指定end-1结束进行截取,返回的新的字符串
public class StringBufferDemo5 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer() ;
sb.append("hello").append("world").append("javaee").append("anroid") ;
System.out.println("sb:"+sb);
System.out.println(sb.substring(5));//subString(xx)---->截取的新的字符串
System.out.println("sb:"+sb);
System.out.println(sb.substring(5,10));//end-1位置
StringBuffer的替换功能
public StringBuffer replace(int start, 起始索引
int end, 结束索引(end-1)
String str) 替换的内容
public class StringBufferDemo5 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer() ;
sb.append("hello").append("world").append("javaee").append("anroid") ;
System.out.println("sb:"+sb);
System.out.println(sb.replace(5,10,"高圆圆"));
}
}