栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础(11)- StringBuffer

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/713451.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号