java基础总结19-java常用API(StringBuffer和Arrays工具类)

1 StringBuffer

1.1 StringBuffer的概述

StringBuffer类概述:线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

StringBuffer和String的区别:StringBuffer长度和内容可变,String不可变。使用StringBuffer做字符串的拼接不会浪费太多资源

1.2 StringBuffer类的构造方法

  • public StringBuffer():

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

  • public StringBuffer(int capacity):

构造一个不带字符,但具有指定初始容量的字符串缓冲区

  • public StringBuffer(String str):

构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。该字符串的初始容量为 16加上字符串参数的长度

例:

StringBuffer sb1 = new StringBuffer();
System.out.println(sb1.capacity());//16
System.out.println(sb1.length());//0

StringBuffer sb2 = new StringBuffer("hello");
System.out.println(sb2.capacity());//21
System.out.println(sb2.length());//5

1.3 StringBuffer的添加功能

  • public StringBuffer append(String str):

将指定的字符串追加到此字符序列

  • public StringBuffer insert(int offset,String str):

将字符串插入此字符序列中

1.4 StringBuffer的删除功能

  • public StringBuffer deleteCharAt(int index):

移除此序列指定位置的 char。此序列将缩短一个 char

  • public StringBuffer delete(int start,int end):

移除此序列的子字符串中的字符。该子字符串从指定的 start 处开始,一直到索引 end - 1 处的字符,如果不存在这种字符,则一直到序列尾部。如果 start 等于 end,则不发生任何更改

1.5 StringBuffer的替换功能

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

使用给定 String 中的字符替换此序列的子字符串中的字符

1.6 StringBuffer的反转功能

public StringBuffer reverse():将此字符序列用其反转形式取代

1.7 StringBuffer的截取功能

  • public String substring(int start)

返回一个新的 String,它包含此字符序列当前所包含的字符子序列

  • public String substring(int start,int end)

返回一个新的 String,它包含此序列当前所包含的字符子序列。该子字符串从指定的 start 处开始,一直到索引 end - 1 处的字符

1.8 StringBuffer和String的相互转换

String和StringBuffer的相互转换

String →StringBuffer
Stirng s;

StringBuffer sb = new StringBuffer (s);

StringBuffer sb = new StringBuffer (); sb.append(s);

StringBuffer →String
String s = new String(sb);

String s = sb.toString();

1.9 StringBuffer的两个面试题

  • 第1题:String,StringBuffer,StringBuilder的区别

1.String是内容不可变的,而StringBuffer和StringBuilder都是内容可变的

2.StringBuffer是同步的,数据安全,效率低

StringBuilder是不同步的,数据不安全,效率高

  • 第2题:StringBuffer和数组的区别
    StringBuffer和数组都是可以装数据的容器

StringBuffer可以存储任意类型的数据,但最终是一个字符串数据

数组只能存储同一种数据类型的数据

1.10 String和StringBuffer分别作为参数传递

public class Practice 
{
    public static void main(String[] args) 
    {
        String s1 = "hello";
        String s2 = "world";
        System.out.println(s1 + "---" + s2);
        change(s1, s2);
        System.out.println(s1 + "---" + s2);

        StringBuffer sb1 = new StringBuffer("hello");
        StringBuffer sb2 = new StringBuffer("world");
        System.out.println(sb1 + "---" + sb2);
        change(sb1, sb2);
        System.out.println(sb1 + "---" + sb2);
    }
    public static void change(StringBuffer sb1, StringBuffer sb2) 
    {
        sb1 = sb2;
        sb2.append(sb1);
    }

    public static void change(String s1, String s2) 
    {
        s1 = s2;
        s2 = s1 + s2;
    }
}

结果:

hello---world
hello---world
hello---world
hello---worldworld

2 Arrays工具类

此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂。
成员方法:

  • public static String toString(int[] a):

返回指定数组内容的字符串表示形式。

  • public static void sort(int[] a):

对指定的 int 型数组按数字升序进行排序。

  • public static int binarySearch(int[] a,int key):

使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。

例:

//定义一个数组
int[] arr = {23,25,65,85,34,82};
//数组转字符串
System.out.println(Arrays.toString(arr));
//数组排序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
//二分查找
System.out.println(Arrays.binarySearch(arr, 65));

运行结果:

[23, 25, 65, 85, 34, 82]
[23, 25, 34, 65, 82, 85]
3

binarySearch方法如果要查找的数在数组中存在,则返回的是该数在数组中的位置

如果不存在则返回的是该数在数组中插入的位置,该数是一个负数,表示要查找的数在数组中不存在

插入位置的计算方法为:例如返回的是-7,则在数组中应该插入的位置是7-1=6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值