StringBuffer类和基本类型包装类

StringBuffer

如果我们创建一个字符串,并且每次要对这个字符串进行操作后,都不会在原字符串上进行操作,而是会构建一个新的字符串对象,这样既浪费时间,又会浪费空间。这时我们引入了StringBuffer类。
概述:
StringBuffer就相当于一个用来存储字符串的容器,长度可以改变,本质是一个线程安全的可变字符序列,类似于String的字符串缓冲区,不能被修改,但可以调用特有的方法改变它的长度和内容。有自己的构造方法。
构造方法:

  • public StringBuffer()
    无参构造方法,在创建对象时,默认会创建一个初始容量为16个字符的不带字符的字符串缓冲区
  • public StringBuffer(int capacity)
    创建对象时指定容量
  • public StringBuffer(String str)
    创建对象时指定字符串内容

方法:

  • public int capacity()
    返回当前的容器容量
  • public int length()
    返回当前容器内字符串的长度
  • public StringBuffer append(String str)
    向容器中拼接字符串
  • public StringBuffer insert(int offset,String str)
    在指定索引处插入字符串
  • public StringBuffer deleteCharAt(int index)
    删除指定索引处的字符
  • public StringBuffer delete(int start,int end)
    删除指定位置的字符串
  • public StringBuffer replace(int start,int end,String str)
    替换指定位置中的字符串
  • public StringBuffer reverse()
    将字符串反转
  • public String substring(int start)
    从指定位置到结束截取字符串并返回
  • public String substring(int start,int end)
    截取指定位置的字符串并返回

String和StringBuffer的相互转换:
String转换为StringBuffer可以使用构造方法 public StringBuffer(String str),在创建StringBuffer时,将String类型对象填入StringBuffer容器中,或者也可以使用StringBuffer中的append()方法。
StringBuffer转换为String可以使用StringBuffer类中的substring()方法。 也可以通过toString()方法。

A:案例演示
需求:把数组中的数据按照指定个格式拼接成一个字符串
举例:
int[] arr = {1,2,3};
输出结果:
“[1, 2, 3]”
用StringBuffer的功能实现

public class Demo3 {
    public static void main(String[] args) {
        int [] arr={1,2,3};
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append('[');
        for (int i = 0; i < arr.length; i++) {
            if(i<arr.length-1){
                stringBuffer.append(arr[i]).append(',');
            }else {
                stringBuffer.append(arr[i]).append(']');
            }
        }
        System.out.println(stringBuffer);
    }
}

StringBuffer和StringBuilder的区别:
StingBuffer和StringBuilder都是字符串缓冲区,前者的线程安全,效率低,后者线程不安全,效率高。

传参
StringBuffer作为一个引用类型,形参的改变会影响实参。

Arrays类

Arrays这个类是一个工具类,此类包含了用于操作数组(如排序和搜索等)的各种方法,此类还包含了一个允许数组被视为列表的静态工厂。

成员方法:

  • public static String toString(int[] a)
    返回指定数组的内容的字符串表现形式
  • public static void sort(int[] a)
    数组进行排序
  • public static int binarySearch(int[] a,int key)
    使用二进制搜索法查找数组中指定的值

二分查找法

public class Demo4 {
    public static void main(String[] args) {
        int[] arr={10,20,30,40,50};
        int index = findIndex(arr, 40);
        System.out.println(index);
    }

    private static int findIndex(int[] arr,int x) {
        int minIndex=0;
        int maxIndex=arr.length-1;
        int centerIndex=(minIndex+maxIndex)/2;
        while (minIndex<=maxIndex){
            if(arr[centerIndex]==x){
                return centerIndex;
            }else if(arr[centerIndex]<x){
                minIndex=centerIndex+1;
            }else if(arr[centerIndex]>x){
                maxIndex=centerIndex-1;
            }
            centerIndex=(minIndex+maxIndex)/2;
        }
        return -1;
    }
}

二分查找法的思想:计算出中间的索引,将数组分为两部分。如果中间的索引的元素正好等于要查找的元素则返回中间的索引值。如果查找的元素小于中间索引的元素,那么就改变数组的结束索引,变为中间索引减1,再继续计算中间索引。从这个小数组中查找。如果查找的元素大于中建索引的元素,那么就改变起始索引,变为中间索引加1,再继续寻找。直到中间索引的元素正好等于这个要查找的元素为止。使用二分查找的前提是要查找的数组必须是有序的。

包装类

为了对基本数据类型进行更多的操作,更方便的操作,java就针对每一种基本数据类型提供了相应的包装类类型。

基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

我们以Interger类举例

Integer类

这类包装Integer值对象中的原始类型int。Integer类型的对象包含了一个字段的类型是int。
构造方法:

  • public Integer(int value)
    将一个int类包装成Integer类型
  • public Integer(String s)
    将一个String类对象的内容包装成Integer类型

int类型和String的相互转化:
int转化为String:

  1. 可以直接将一个int类型的数据后面拼接上一个空串
  2. 先将int类型包装为Integer类型,再调用Integer中的toString()方法。
  3. 调用String类中的valuOf()方法

String转化为int:

  1. 将String类型的数据包装为Integer类型,再调用intValue()方法。
  2. 调用Integer类中的parsent()方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值