Java SE入门及基础(42)

目录

StringBuilder 和 StringBuffer

1. 特性介绍

2. 构造方法

示例

3. 常用方法

追加

删除指定区间存储的内容

删除存储区指定下标位置存储的字符

在StringBuilder存储区指定偏移位置处插入指定的字符串

将存储区的内容倒序

获取指定字符串在存储区中的位置

练习

4. 对比 String

Java SE文章参考:Java SE入门及基础知识合集-CSDN博客


StringBuilder StringBuffer

1. 特性介绍

  • StringBuilder 类位于 java.lang 包中,无需引入,直接使用即可。
  • StringBuilder 类是由 final 修饰的,表示 StringBuilder 是一个最终类,不可能被继承
  • StringBuilder 类构建的对象,可以实现字符序列的追加,但不会产生新的对象,只是将这个字符序列保存在字符数组中。

2. 构造方法

public StringBuilder (); // 构建一个 StringBuilder 对象,默认容量为 16
public StringBuilder ( int capacity ); // 构建一个 StringBuilder 对象并指定初始化容量
public StringBuilder ( String str ); // 构建一个 StringBuilder 对象,并将指定的字符串存储在其中
示例
package com . we . builder ;
public class Example1 {
        public static void main ( String [] args ) {
                StringBuilder sb1 = new StringBuilder (); // 构建了一个初始化容量为 16 的字符串构建器
                StringBuilder sb2 = new StringBuilder ( 1024 ); // 构建了一个初始化容量为1024的字符串构建器
                StringBuilder sb3 = new StringBuilder ( "你好吗 " );
        }
}

3. 常用方法

追加
public StringBuilder append ( String str ); // 将一个字符串添加到 StringBuilder 存储区
public StringBuilder append ( StringBuffer sb ); // StringBuffer 存储的内容添加StringBuilder存储区
删除指定区间存储的内容
public StringBuilder delete ( int start , int end ); // StringBuilder 存储区指定的开始位置到指定的结束位置之间的内容删除掉
删除存储区指定下标位置存储的字符
public StringBuilder deleteCharAt ( int index );
StringBuilder存储区指定偏移位置处插入指定的字符串
public StringBuilder insert ( int offset , String str );
将存储区的内容倒序
public StringBuilder reverse ();
获取指定字符串在存储区中的位置
public int indexOf ( String str ); // 获取指定字符串在存储区中第一次出现的位置
public int lastIndexOf ( String str ); // 获取指定字符串在存储区中最后一次出现的位置
练习
        现有字符串 ababababababababa ,求其中子字符串 aba 出现的次数(使用 String 类完成)
package com . we . exercise ;
public class Exercise1 {
        public static void main ( String [] args ) {
                String s = "ababababababababa" ;
                String target = "aba" ;
                int times = 0 ; // 记录出现次数
                int length = s . length (); // 字符串的长度
                int targetLength = target . length (); // 目标字符串的长度
                int maxIndex = length - targetLength ; // 遍历字符串时最大下标
                for ( int i = 0 ; i <= maxIndex ; i ++ ){
                        String s1 = s . substring ( i , i + targetLength ); // 截取字符串
                        if ( s1 . equals ( target )){
                        times ++ ;
                        }
                }
                System . out . println ( times );
        }
}
        将从控制台输入的数字转换为财务数字(10,005.25 ( 使用 StringBuilder 完成 )
public class Exercise2 {
        public static void main ( String [] args ) {
                Scanner sc = new Scanner ( System . in );
                System . out . println ( " 请输入一个数字: " );
                double money = sc . nextDouble ();
                StringBuilder builder = new StringBuilder ();
                builder . append ( money );
                //找到小数点的位置
                int index = builder . indexOf ( "." );
                //小数点前面的数字才需要处理
                if ( index > 3 ){
                        for ( int i = index - 3 ; i > 0 ; i -= 3 ){
                                builder . insert ( i , "," );
                        }
                }
                System . out . println ( builder . toString ());
        }
}

4. 对比 String

        String 、 StringBuilder StringBuffer 都是用来处理字符串的。在处理少量字符串的时候,它们之间的处理效率几乎没有任何区别。但在处理大量字符串的时候,由于 String 类的对象不可再更改,因此在处理字符串时会产生新的对象,对于内存的消耗来说较大,导致效率低下。而 StringBuilder和 StringBuffer 使用的是对字符串的字符数组内容进行拷贝,不会产生新的对象,因此效率较高。而StringBuffer 为了保证在多线程情况下字符数组中内容的正确使用,在每一个成员方法上面加了锁,有锁就会增加消耗,因此 StringBuffer 在处理效率上要略低于 StringBuilder

Java SE文章参考:Java SE入门及基础知识合集-CSDN博客

  • 24
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值