10.1常用类(StringBuffer类)
来源:互联网 发布:西安软件新城地址 编辑:程序博客网 时间:2024/06/05 22:33
StringBuffer类概述及其构造方法
(1)StringBuffer概述:构造一个字符串缓冲区,可变字符序列,线程安全的!
【线程安全】(多线程的一个范畴)
线程:是依赖于进程而存在!
线程的安全------>同步了---->效率低 举例:银行的网站,医院的网站
线程不安全----->不同步---->效率高 举例:论坛之类的网站,新闻类的网站
(2)StringBuffer的构造方法:
publicStringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符
publicStringBuffer(int capacity):构造一个不带字符,但具有指定初始容量的字符串缓冲区。
publicStringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初始容量为 16 加上字符串参数的长度。
特有的方法:
public int capacity():返回当前容量
public int length():获取字符串缓冲区的长度
(3)StringBuffer类的成员方法:
StringBuffer的添加功能:
publicStringBuffer append(String str):追加,可以添加任何数据类型
publicStringBuffer insert(int offset,String str):在指定位置插入一个新的字符串str
insert:插入,和后面MySQL数据库中一个插入数据的语法很相似
StringBuffer的删除功能:
publicStringBuffer deleteCharAt(int index):删除指定位置处的字符,返回字符串缓冲区本身
publicStringBuffer delete(int start,int end):删除从指定位置开始,到指定位置接收,包前不包后,返回字符串缓冲区本身
StringBuffer的替换功能:
publicStringBuffer replace(int start,int end,String str):将Str这个字符串替换此字符串中从指定索引开始到指定索引处结束(包前不包后)的字符,返回字符串缓冲区本身
StringBuffer的反转功能:
publicStringBuffer reverse():返回的还是字符串缓冲区本身
StringBuffer的截取功能:
publicString substring(int start)
publicString substring(int start,int end)
和String类的功能是一样的,注意:返回值类型发生变化了,截取之后,返回一个新的字符串
截取功能和前面几个功能的不同:返回值类型是String类型,本身没有发生改变
(4)StringBuffer和String之间的类型转换问题:
学习类之间的转换的作用:
A类---->B类,是为了使用B类的功能
B类---->A类,B类类型并不是我想要的,所以还需要转回去!
程序举例:
public class StringBufferTest {
publicstatic void main(String[] args) {
//String----->StringBuffer类型
//定义一个字符串:
Strings = "hello" ;
// StringBuffersb = s ;
// StringBuffer sb = "hello" ;
//方式1):构造方式:StringBuffer(String str)
StringBuffersb = new StringBuffer(s) ;
//方式2):可以空参构造方法和append()相结合
StringBuffersb2 = new StringBuffer() ;
sb2.append(s);
System.out.println("sb2:"+sb2);
System.out.println("sb:"+sb);
System.out.println("---------------------------");
//StringBuffer---->String
//构造字符串缓冲区对象
StringBufferbuffer = new StringBuffer("hello") ;
//方式1:public String(StringBuffer buffer)
Strings1 = new String(buffer) ;
//方式2:public String toString()
Strings2 = buffer.toString() ;
System.out.println("s1:"+s1);
System.out.println("s2:"+s2);
}
}
(5)【两个面试题】
1)String,StringBuffer,StringBuilder的区别?
String:构造一个字符串常量池(不可变的字符序列),一旦被赋值,其值不能被改变!(重要的特点:也被用来当做形式参数传递:又和基本数据类型作为值传递是一样的)
StringBuffer:构造一个字符串缓冲区(字符串缓冲池),可变的字符序列,线程安全,效率低
StringBuilder:是用来替代StringBuffer(指的是在单线程中替代比较多),它和StringBuffer兼容的API(StringBuffer有的功能StringBuilder都具有)可变的字符序列,线程不安全,效率高!一般情况,单线程中使用StringBuilder去构造字符串缓冲区!
2)StringBuffer和数组的区别?
共同点:都可以看做是一个容器!
StringBuffer:最终得到的数据还是字符串类型
数组:可以存储多种类型的元素,必须保证元素的类型一致的!
String和StringBuffer都可以作为形式参数进行传递!
注意:
String类型它是一种特殊的引用类型,作为形式参数传递,和基本数据类型的效果是一样的!
程序理解:
public class StringBufferDemo {
publicstatic void main(String[] args) {
//定义两个字符串
Strings1 = "hello" ;
Strings2 = "world" ;
System.out.println(s1+"-----"+s2);//hello-----world
//写一个方法
change(s1,s2);
System.out.println(s1+"-----"+s2);//hello----world
StringBuffersb1 = new StringBuffer("hello") ;
StringBuffersb2 = new StringBuffer("world") ;
System.out.println(sb1+"-----"+sb2);//hello----world
change2(sb1,sb2);
System.out.println(sb1+"-----"+sb2);//hello--worldworld
}
publicstatic void change(String s1,String s2){
s1= s2 ;
s2= s1 +s2 ;
}
publicstatic void change2(StringBuffer sb1,StringBuffer sb2) {
sb1= sb2 ;
sb2.append(sb1);
}
}
(6)判断一个字符串是否是对称字符串
程序如下:
import java.util.Scanner;
public class Judgedemo {
publicstatic void main(String[] args) {
//创建键盘录入对象
Scannersc=new Scanner(System.in);
//录入并接收数据
System.out.println("请输入字符串:");
String s=sc.nextLine();
//法一:StringBuffer的反转功能
boolean flag=Judge(s);
System.out.println("flag:"+flag);
//法二://一个一个的比
boolean flag2=Judge2(s);
System.out.println("flag2:"+flag2);
}
//StringBuffer的反转功能
public static boolean Judge(String s){
// StringBuffersb=new StringBuffer();
// if(sb.append(s).reverse().toString().equals(s)){
// returntrue;
// }else{
// returnfalse;
// }
// }
//简化版
returnnew StringBuffer(s).reverse().toString().equals(s);
}
//一个一个的比
public static boolean Judge2(Strings){
// boolean flag=true;
char[]ch=s.toCharArray();
for(intstart=0,end=ch.length-1;start<end;start++,end--){
if(ch[start]!=ch[end]){
// flag=false;
// break;
returnfalse;
}
}returntrue;
}
}
- 10.1常用类(StringBuffer类)
- 系统常用类StringBuffer
- JavaSE06_常用类之StringBuffer
- JAVA常用类之StringBuffer
- StringBuffer & StringBuilder & String,常用类
- StringBuffer类的常用方法
- java常用类库---StringBuffer
- StringBuffer类的常用方法
- StringBuffer类的常用方法
- String类和StringBuffer类常用操作
- JAVA中StringBuffer类常用方法详解
- Java StringBuffer类常用方法简介
- Java-StringBuffer类常用方法简介
- [Java] 常用类-01 String / StringBuffer
- StringBuffer类的常用方法集合
- java常用类库之StringBuffer
- Java常用类库(StringBuffer)
- Java常用类库之Stringbuffer
- 录制音视频及promise的使用
- CCF 201604-1折点计数java
- 未来自己技术路线的一个规划
- Weblogic服务器各Server服务及部署的Web应用运行正常,网页无法访问
- keras 保存模型和加载模型
- 10.1常用类(StringBuffer类)
- C++单例模式_1
- 汉诺塔问题(递归)
- 如何更新及替换ViewPager中的Fragment
- Unity3D之RequireComponent()
- 【HDU 3785】寻找大富翁(sort或者优先队列-水题)
- SSM框架Web程序的流程(Spring SpringMVC Mybatis)
- [UVA] 10881
- 二叉树的后序遍历非递归算法