StringBuffer类
来源:互联网 发布:财务部数据流程图 编辑:程序博客网 时间:2024/06/16 06:40
一. StringBuffer
1. 构造方法
1. public StringBuffer()构造一个不带字符的字符串缓冲区,其初始容量为16个字符。
2. public StringBuffer(int capacity)构造一个不带字符的字符串缓冲区,但其初始容量为指定容量。
3. public StringBuffer(String str)构造一个字符串缓冲区,但为其初始化为str,初始容量为16+str字符数个字符。
2. 常用方法
1. public int length()获取字符串长度。
2. public int capacity()获取字符串缓冲区容量大小。
3. StringBuffer有关添加的方法
1. public StringBufferappend(int/double/String/char/boolean/……)当前这个方法追加给字符串缓冲区数据,返回字符串缓冲区本身
2. public StringBuffer insert(int offset,Stringstr)
在某一个位置插入字符串,返回字符串缓冲区。
例:
public class StringDemo2 {
public static void main(String[]args) {
StringBuffers=new StringBuffer();
s.append(123).append(true).append(5.34).append("hello");
s.insert(5, "world");
}
}
4.StringBuffer的删除功能
1.publicStringBuffer deleteCharAt(int index)表示删除指定位置打的字符,返回的是字符串缓冲区本身。
2.public StringBufferdelete(int start,int end)表示返回的是指定位置开始到指定位置结束的字符串,返回的是字符串缓冲区本身
例:
public class StringDemo2 {
public static void main(String[]args) {
StringBuffer buffer=new StringBuffer();
buffer.append("fvndfiuvnfd").append("bdvdfiuvb").append("45678");
// 删除第12个字符
System.out.println(buffer.deleteCharAt(12));
// 从开始制定位置,到结束指定位置之间的字符
System.out.println(buffer.delete(12,buffer.length()));
}
}
5.StringBuffer的反转功能
Public StringBufferreverse()将字符串中的字符直接翻转过来
6.StringBuffer的替换功能
Public StringBufferreplace(int start,int end,String str)
从指定位置开始到指定位置结束之间的字符串被字符串str替换
7.StringBuffer的截取功能
1.publicString substring (int start)从指定位置截取到末尾,返回的是一个字符串
2.public String substring(int start,int end)从指定位置开始截取,到指定位置结束截取,返回的是一个字符串。
***面试题1:String,StringBuffer,StringBuilder之间的区别?
从字符串是否可变考虑:
String是一个不可变字符串序列,而StringBuffer和StringBuilder是一个可变字符序列。
从线程角度考虑:
StringBuffer线程不安全,不同步,执行效率高,要比StringBuffer高,因此在单线程中优先考虑StringBuilder,但是StringBuffer的线程安全。
从形式参数考虑:
String作为形式参数和基本数据类型作为形式参数的效果是相同的。
面试题二:String和StringBuffer之间的区别?
StringBuffer:会构造一个字符串缓冲区,从内存角度考虑,,一般使用StringBuffer的情况比较多(在单线程中用StringBuilder代替),但StringBuffer效率比较高
String:普通字符串,但从内存上讲比较耗费空间
安全性:String---StringBuffer---StringBuilder
效率:StringBuilder---StringBuffer—String
例1:Stringbuffer与String之间的相互转换
public class StringDemo2 {
public static void main(String[]args) {
// String---StringBuffer
String s="buitiful";
// 方式一
StringBuffer b=new StringBuffer(s);
System.out.println(b);
//方式二
StringBuffer b1=newStringBuffer();
b1.append(s);
System.out.println(b1);
System.out.println("------------------------------------------");
// StringBuffer---String
StringBuffer s2=new StringBuffer("bultiful");
// 方式一
String t=new String(s2);
System.out.println(t);
// f方式二
String t1=s2.toString();
System.out.println(t1);
}
}
例2:使用String和StringBuffer方法实现将字符型数组拼接成字符串 (定义功能方法,自己进行构造)
public class StringDemo2 {
public static void main(String[]args) {
int arr[]= {12,14,16,19,65};
// 使用String类型实现
String s=arrtoString(arr);
System.out.println(s);
// 使用StringBuffer类型实现
String s1=arrtoString2(arr);
System.out.println(s1);
}
public static String arrtoString(intarr[]) {
String s="";
s+="[";
for(intx=0;x<arr.length;x++) {
if(x==arr.length-1) {
s+=arr[x];
}
else {
s+=arr[x]+",";
}
}
s+="]";
return s;
}
public static String arrtoString2(int []arr ) {
StringBuffer sb=new StringBuffer();
sb.append("[");
for(intx=0;x<arr.length;x++) {
if(x==arr.length-1) {
sb.append(arr[x]);
}
else {
sb.append(arr[x]).append(",");
}
}
sb.append("]");
returnsb.toString();
}
}
例3:通过String和StringBuffer来完成字符串的反转(String类中没有直接的反转,但有将字符串转化为数组的方法。StringBuffer类中有直接反转StringBuffer的反转方法,但最后还要使用toString方法,因为返回值类型为String型)。
import java.util.Scanner;
public class StringDemo2 {
public static void main(String[]args) {
System.out.println("请输入一段字符串:");
Scanner sc=new Scanner(System.in);
String str=sc.nextLine();
String s=reverse(str);
System.out.println(s);
String b=reverse2(str);
System.out.println(b);
}
public static String reverse(String s) {
String result="";
char [] ch=s.toCharArray();
for(intx=ch.length-1;x>0;x--) {
result+=ch[x];
}
return result;
}
public static String reverse2(String s) {
StringBuffer t=new StringBuffer(s);
return t.reverse().toString();
}
}
例4:通过String和StringBuffer分别来完成判断字符串是否为对称字符串
分析:
用第一个字符和倒数第一个字符相比较
用二个字符和倒数第二个字符进行比较
import java.util.Scanner;
public class StringDemo2 {
public static void main(String[]args) {
System.out.println("请输入一段字符串");
Scanner sc=new Scanner(System.in);
String line=sc.nextLine();
//通过String
booleanflag=issame(line);
System.out.println(flag);
// 通过StringBuffer
booleanflag2=issame2(line);
System.out.println(flag);
}
public static booleanissame(Strings) {
char [ ]ch=s.toCharArray();
booleanflag=true;
for(intstart=0,end=ch.length-1;start<=end;start++,end--) {
if(ch[start]!=ch[end]) {
returnflag=false;
}
}
returnflag;
}
public static boolean issame2(String s) {
return new StringBuffer(s).reverse().equals(s);
}
}
- StringBuffer 类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer类
- StringBuffer 类
- Integer类
- Using the JavaScript console in Visual Studio Code
- SpringMVC+Mybatis+Oracle环境下实现ID自增长
- 大小端介绍及其检测方法
- Nginx rewrite正则匹配重写
- StringBuffer类
- Linux(二) 常用命令和目录结构
- Django框架一周期总结
- Spark 中的宽依赖和窄依赖
- 《Java虚拟机规范(Java+SE+7)》扫描版[PDF] [转载]
- 132. Palindrome Partitioning II
- ROS usb_cam安装
- java作业
- MVP入门,接口回调new接口和implement实现,防止内存泄露解绑