Java--StringBuffer ﹏ヽ暗。殇╰゛Y 2023-10-17 10:58 7阅读 0赞 一、StringBuffer类:线程安全的可变字符序列 1、StringBuffer类 \[1\]线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 \[2\]可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。 \[3\]StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。 2、StringBuffer和String的区别 \[1\]String是一个不可变的字符序列 \[2\]StringBuffer是一个可变的字符序列 二、StringBuffer类的构造方法 1、StringBuffer的构造方法: \[1\]public StringBuffer():无参构造方法 \[2\]public StringBuffer(int capacity):指定容量的字符串缓冲区对象 \[3\]public StringBuffer(Stringstr):指定字符串内容的字符串缓冲区对象 2、StringBuffer的方法: \[1\]publicint capacity():返回当前容量。 理论值 \[2\]publicint length():返回长度(字符数)。 实际值 三、StringBuffer的添加功能 1、public StringBuffer append(Stringstr): 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身 2、public StringBuffer insert(int offset,Stringstr): 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身 四、StringBuffer的删除功能 1、public StringBuffer deleteCharAt(int index): 删除指定位置的字符,并返回本身 2、public StringBuffer delete(int start,int end): 删除从指定位置开始指定位置结束的内容,并返回本身 五、StringBuffer的替换功能 1、public StringBuffer replace(int start,int end,Stringstr): 从start开始到end用str替换 2、StringBuffer的反转功能 public StringBuffer reverse();字符串反转 六、StringBuffer的截取功能 1、public String substring(int start): 从指定位置截取到末尾 2、public String substring(int start,int end): 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置 注意:返回值类型不再是StringBuffer本身,返回String类型 七、StringBuffer和String的相互转换 1、String -- StringBuffer \[1\]通过构造方法 \[2\]通过append()方法 2、StringBuffer -- String \[1\]通过构造方法 \[2\]通过toString()方法 \[3\]通过subString(0,length); 八、StringBuffer和StringBuilder的区别 1、StringBuffer和StringBuilder的区别 \[1\]StringBuffer是jdk1.0版本的,是线程安全的,效率低 \[2\]StringBuilder是jdk1.5版本的,是线程不安全的,效率高 2、String和StringBuffer,StringBuilder的区别 \[1\]String是一个不可变的字符序列 \[2\]StringBuffer,StringBuilder是可变的字符序列 package com.cat.stringbuffer; public class StringBufferMethod { public static void main(String[] args) { /* 一、StringBuffer类:线程安全的可变字符序列 1、StringBuffer类 [1]线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 [2]可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。 [3]StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而 insert 方法则在指定的点添加字符。 2、StringBuffer和String的区别 [1]String是一个不可变的字符序列 [2]StringBuffer是一个可变的字符序列 二、StringBuffer类的构造方法 1、StringBuffer的构造方法: [1]public StringBuffer():无参构造方法 [2]public StringBuffer(int capacity):指定容量的字符串缓冲区对象 [3]public StringBuffer(String str):指定字符串内容的字符串缓冲区对象 2、StringBuffer的方法: [1]public int capacity():返回当前容量。 理论值 [2]public int length():返回长度(字符数)。 实际值 三、StringBuffer的添加功能 1、public StringBuffer append(String str): 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身 2、public StringBuffer insert(int offset,String str): 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身 四、StringBuffer的删除功能 1、public StringBuffer deleteCharAt(int index): 删除指定位置的字符,并返回本身 2、public StringBuffer delete(int start,int end): 删除从指定位置开始指定位置结束的内容,并返回本身 五、StringBuffer的替换功能 1、public StringBuffer replace(int start,int end,String str): 从start开始到end用str替换 2、StringBuffer的反转功能 public StringBuffer reverse();字符串反转 六、StringBuffer的截取功能 1、public String substring(int start): 从指定位置截取到末尾 2、public String substring(int start,int end): 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置 注意:返回值类型不再是StringBuffer本身,返回String类型 七、StringBuffer和String的相互转换 1、String -- StringBuffer [1]通过构造方法 [2]通过append()方法 2、StringBuffer -- String [1]通过构造方法 [2]通过toString()方法 [3]通过subString(0,length); 八、StringBuffer和StringBuilder的区别 1、StringBuffer和StringBuilder的区别 [1]StringBuffer是jdk1.0版本的,是线程安全的,效率低 [2]StringBuilder是jdk1.5版本的,是线程不安全的,效率高 2、String和StringBuffer,StringBuilder的区别 [1]String是一个不可变的字符序列 [2]StringBuffer,StringBuilder是可变的字符序列 * */ initMethod(); addMethod();//添加 //String和StringBuffer作为参数传递 System.out.println("-------------"); String s1 = "abc"; System.out.println(s1); change(s1);//Ctrl+1创建方法 System.out.println(s1);//方法弹栈了 System.out.println("-------------"); StringBuffer sb1 = new StringBuffer(); sb1.append("abc"); System.out.println(sb1); change(sb1);//Ctrl+1创建方法 System.out.println(sb1); } public static void change(StringBuffer sb1) { sb1.append("efg"); } public static void change(String s1) { s1 = s1 + "efg"; } private static void addMethod() { System.out.println("================添加功能================="); StringBuffer sb1 = new StringBuffer(); System.out.println(sb1.toString()); StringBuffer sb2 = sb1.append(true); System.out.println(sb2.toString()); StringBuffer sb3 = sb1.append("abc"); System.out.println(sb3.toString()); StringBuffer sb4 = sb1.append(100); System.out.println(sb4.toString()); System.out.println("--------"); System.out.println(sb1.toString());//trueabc100 System.out.println(sb2.toString());//trueabc100 System.out.println(sb3.toString());//trueabc100 System.out.println(sb4.toString());//trueabc100 /* StringBuffer是字符串缓冲区,是一个不可变的字符序列,当new的时候在堆内存创建 了一个对象,底层是一个长度为16的字符数组,当调用添加的方法时,不会再重新创建对象, 只是不断地向元缓冲区添加字符,其实这样操作就是四个对象指向同一个对象; * */ StringBuffer sb11 = new StringBuffer("abc"); // StringBuffer sb12 = sb11.insert(4, "123"); //StringIndexOutOfBoundsException StringBuffer sb12 = sb11.insert(1, "123"); System.out.println(sb12); StringBuffer sb13 = sb11.reverse();//反转功能 System.out.println(sb13); } private static void initMethod() { System.out.println("================构造方法================="); StringBuffer sb1 = new StringBuffer(); System.out.print(sb1.length()); //容器中的字符个数,实际值 System.out.println(" " + sb1.capacity()); //容器中的初始容量,理论值 StringBuffer sb2 = new StringBuffer(10); System.out.print(sb2.length()); System.out.println(" " + sb2.capacity()); StringBuffer sb3 = new StringBuffer("abc"); System.out.print(sb3.length()); System.out.println(" " + sb3.capacity()); //length + 初始容量 } } ![Center][] [Center]: https://img-blog.csdn.net/20170224174601915?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTWluZ2dlUWluZ2NodW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center
相关 借助在线工具查看javaStringBuffer字符串 java中,经常遇到JSON XML SQL是写在StringBuffer里的,在调试修改时看字符串全貌往往比较麻烦,直接得出结果往往得单写一个demo。 不过好在网上有现成 本是古典 何须时尚/ 2022年09月16日 11:29/ 0 赞/ 219 阅读
还没有评论,来说两句吧...