Java基础之字符串操作(StringBuffer)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_22067469/article/details/82148044

StringBuffer类的说明

1.StringBuffer线程安全的可变字符序列
2.StringBuffer内部实现是字符数组
3.StringBuffer和String的区别
String是一个不可变的字符序列
StringBuffer是一个可变的字符序列
StringBuffer线程安全,可以加锁

StringBuffer类的构造方法

构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符

// public StringBuffer():【开发中常用此构造方法】
StringBuffer sb1 = new StringBuffer();
System.out.println("sb1的初始容量:" +sb1.capacity());//内部字符数组的初始容量
System.out.println(sb1.length());//字符串的长度

// public  StringBuffer(int capacity)
// 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer sb2 = new StringBuffer(24);
System.out.println("sb2的初始容量:" + sb2.capacity());

// public  StringBuffer(CharSequence seq)
// 构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符。
StringBuffer sb3 = new StringBuffer("sb,你好吗?");
System.out.println("sb3的初始容量:" + sb3.capacity());
System.out.println("sb3:" + sb3);

StringBuffer的添加方法

1.public StringBuffer append(String str):
可以把任意类型数据添加到”字符串缓冲区”里面,并返回字符串缓冲区本身
2.public StringBuffer insert(int offset,String str):
在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身

//StringBuffer 字符串缓冲区
StringBuffer sb = new StringBuffer();
//System.out.println("");
sb.append("hello");
sb.append(" how are you! ");
sb.insert(5, " kyrie ");//代表指定的位置插入字符串
//前面的效果等于 String s = "hello " + " how are you";
System.out.println(sb);

StringBuffer的删除功能

1.public StringBuffer deleteCharAt(int index):
删除指定位置的字符,并返回本身
2.public StringBuffer delete(int start,int end):
删除从指定位置开始指定位置结束的内容,并返回本身

StringBuffer sb = new StringBuffer("Gosling,Java Father...");
System.out.println(sb);
//删除指定位置的字符
sb.deleteCharAt(1);//删除o
System.out.println(sb);
//删除指定开始和结束位置的字符
sb.delete(1, 4);
System.out.println(sb);

StringBuffer的替换和反转功能

1.StringBuffer的替换功能
public StringBuffer replace(int start,int end,String str):
从start开始到end用str替换
2.public StringBuffer reverse():
字符串反转

StringBuffer sb = new StringBuffer();
sb.append("Hello,CBA,How are you?");
System.out.println(sb);

//把名字改成NBA
/**
 * end的计算,start + 字符串长度
 */
sb.replace(6, 13, "NBA");
System.out.println(sb);

String s = "abc";
//把String类型包装成StringBuffer
StringBuffer sb = new StringBuffer(s);
//把字符串反转
sb.reverse();
System.out.println(sb);

StringBuffer的截取功能及注意事项

String s = "Hello,Gosling";
s = s.substring(0, 5);
System.out.println("s:" + s);
StringBuffer sb = new StringBuffer();
sb.append("Hello,Gosling");
System.out.println("sb:" + sb);
//1.从指定位置截取到末尾,这个方法的返回值类型是String,不是StringBuffer
String s2 = sb.substring(6);
System.out.println("s2:" + s2);
String s3 = sb.substring(0, 5);
System.out.println("s3:" + s3);

StringBuffer sb = new StringBuffer();
sb.append("abcdefg");//存在StringBuffer内部的一个字符数组char[] toStringCache

//打印一个对象,其实会调用内部的toString方法
//toString方法把字符数组转字符串,char[] -> String
System.out.println(sb);

把数组转成字符串, 用StringBuffer实现

//1.声明一个数组
int[] arr = {1,2,3,4,5,6};

//2.声明字符串缓冲区对象
StringBuffer sb = new StringBuffer();
sb.append("[");

//3.遍历元素
for(int i=0;i<arr.length;i++){
    sb.append(arr[i]);
    if(i == arr.length - 1){//最后一个
        sb.append("]");
    }else{
        sb.append(",");
    }
}

System.out.println(sb);

把字符串反转 ,用StringBuffer的功能实现

//1.监听用户键盘输入
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一段内容:");
String s = scanner.nextLine();

//2.反转
StringBuffer sb = new StringBuffer(s);
sb.reverse();
System.out.println(sb);

面试题

StringBuffer和StringBuilder的区别
StringBuffer是jdk1.0版本的,是线程安全的,效率低,方法前有个synchronized,同步锁
StringBuilder是jdk1.5版本的,是线程不安全的,效率高,方法是没有加锁
String 和StringBuffer,StringBuilder的区别
String是一个不可变的字符序列
StringBuffer,StringBuilder是可变的字符序列

StringBuffer buffer = new StringBuffer();
buffer.append("abc");
System.out.println("buffer:" + buffer);

StringBuilder builder = new StringBuilder();
builder.append("abc");
System.out.println("builder:" + builder);

猜你喜欢

转载自blog.csdn.net/qq_22067469/article/details/82148044
今日推荐