Java基础(11)- StringBuffer

Java基础(11)- StringBuffer,第1张

Java基础(11)- StringBuffer

目录

概述

StringBuffer的构造方法

Stringbuffer的方法

添加功能

删除功能

替换和反转功能

查找功能

截取功能(这两个方法的返回值不再是StringBuffer本身)

StringBuffer和String的相互转换

StringBuffer和StringBuilder的区别

String和StringBuffer分别作为参数传递



    概述

    我们如果要对字符串进行拼接 *** 作,每次拼接都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题。

    StringBuffer即线程安全的可变字符序列。

    StringBuffer的构造方法
     //无参构造
     public StringBuffer()
     //指定容量的字符串缓冲区对象
     public StringBuffer(int capacity)
     //指定字符串内容的字符串缓冲区对象
     public StringBuffer(String str)

    例如:

     public class Test {
         public static void main(String[] args) {
             //构造StringBuffer对象
             //无参构造
             StringBuffer stringBuffer = new StringBuffer();
             //指定容量
             StringBuffer stringBuffer1 = new StringBuffer(20);
             //指定字符串内容
             StringBuffer stringBuffer2 = new StringBuffer("abc");
         }
     }

    Stringbuffer的方法

    返回当前容量:理论值

    public int capacity()

    返回长度(字符数):实际值

    public int length()

    代码演示:

     public class Test2 {
         public static void main(String[] args) {
     //        StringBuffer的方法
             StringBuffer buffer = new StringBuffer();
             System.out.println(buffer.capacity());
             System.out.println(buffer.length());
         }
     }

    添加功能

    把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身,

    public StringBuffer append(String str)

    指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身,

    public StringBuffer insert(int offset,String str)

    示例1:

     public class Test3 {
         public static void main(String[] args) {
     //        StringBuffer的添加功能
             StringBuffer buffer = new StringBuffer();
             buffer.append(123).append('a').append((char)98).append("cde");
             System.out.println(buffer);
         }
     }

    示例2:

     public class Test4 {
         public static void main(String[] args) {
             //        StringBuffer的添加功能insert
             StringBuffer buffer = new StringBuffer();
             System.out.println(buffer.insert(0, "abc").insert(1,"abc"));
         }
     }

    删除功能

    删除指定位置的字符,并返回本身

    public StringBuffer deleteCharAt(int index)

    删除从指定位置开始到指定位置结束的字符串,并返回本身

    public StringBuffer delete(int start,int end)

    示例1:

     public class Test5 {
         public static void main(String[] args) {
     //        StringBuffer的删除功能
             StringBuffer buffer = new StringBuffer("abcdefg");
             System.out.println(buffer.deleteCharAt(0));
         }
     }

    示例2:

     public class Test6 {
         public static void main(String[] args) {
     //        StringBuffer的删除指定字符串功能
             StringBuffer buffer = new StringBuffer("abcdefghi");
             System.out.println(buffer.delete(1, 3));
         }
     }

    替换和反转功能

    从start开始到end用str替换

    public StringBuffer replace(int start,int end,String str)

    字符串反转

    public StringBuffer reverse()

    示例1:

     public class Test7 {
         public static void main(String[] args) {
     //        StringBuffer的替换功能
             StringBuffer buffer = new StringBuffer("aBCDefg");
             System.out.println(buffer.replace(1, 4, "bcd"));
         }
     }

    示例2:

     public class Test8 {
         public static void main(String[] args) {
     //        StringBuffer的反转功能
             StringBuffer buffer = new StringBuffer("abcde");
             System.out.println(buffer.reverse());
         }
     }

    查找功能

    从头查找该字符串,在容器中第一次出现的索引,如果找不到就返回-1.

    int indexOf (String str)

    从指定索引处开始查找该字符串第一次出现的索引,如果找不到就返回-1

    int indexOf (String str,int fromIndex)

    从后往前找

    int lastIndexOf (String str)

    int lastIndexOf (String str,int fromIndex)

    示例1:

     public class Test9 {
         public static void main(String[] args) {
     //        StringBuffer 的indexOf(String str)方法和indexOf(String str,int fromIndex)方法
             StringBuffer buffer = new StringBuffer("abcjhabclkabc");
             System.out.println(buffer.indexOf("abc"));
             System.out.println(buffer.indexOf("abc", 3));
         }
     }

    示例2:

     public class Test10 {
         public static void main(String[] args) {
     
             StringBuffer buffer = new StringBuffer("abchjsdgfabckdbfabcjjd");
             System.out.println(buffer.lastIndexOf("abc"));
             System.out.println(buffer.lastIndexOf("abc",buffer.length()-10));
         }
     }

    截取功能(这两个方法的返回值不再是StringBuffer本身)

    从指定位置截取到末尾

    public String substring(int start)

    截取从指定位置开始到结束位置,包括开始位置,不包括结束位置

    public String substring(int start,int end)

    示例1:

     public class Test11 {
         public static void main(String[] args) {
     //        StringBuffer的从指定位置截取到末尾功能
             StringBuffer buffer = new StringBuffer("abcdef");
             System.out.println(buffer.substring(3));
     ​
         }
     }

    示例2:

     public class Test12 {
         public static void main(String[] args) {
     //        StringBuffer的截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
             StringBuffer buffer = new StringBuffer("abcdefghijk");
             System.out.println(buffer.substring(1, 5));
         }
     }

    StringBuffer和String的相互转换

    String --> StringBuffer

     1. 通过构造方法
     2. 通过append()方法

    StringBuffer --> String

     1. 使用substring方法
     2. 通过构造方法
     3. 通过toString()方法
    StringBuffer和StringBuilder的区别

    1、StringBuffer多线程安全的,StringBuilder多线程不安全

    2、StringBuffer从JDK1.0就有了,StringBuilder是JDK5.0才出现

    String和StringBuffer分别作为参数传递

    String

    String是引用类型,但是它是一个常量,在作参数传递的时候,完全可以将其看成基本数据类型类型数据进行传递。所以String类型属于值传递,不改变其值。

    StringBuffer

    作为引用数据类型传递,改变其值。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5710101.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存