JavaSE基础———StringBuffer StringBuilder Arrays和基本数据类型包装类

1.StringBuffer类

  (1)StringBuffer类概述

    在学习Sring类时,我们知道当你创建一个String类的对象时,它的值在创建之后是不可变的,因为它的存储位置在方法区里面的字符串池,所以StringBuffer的出现就解决了上述的问题。我们查询API文档时,称StringBuffer为可变的字符序列,通过某些方法可以改变该序列的长度和内容。其实StringBuffer就像是个容器,里面可以装很多的字符串,并且能够对这些字符串进行各种操作。

  (2)StringBuffer类的构造方法
    ● 构造方法:
    StringBuffer() 构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。
    StringBuffer(int capacity) 构造一个不带字符,但具有指定初始容量的字符串缓冲区。
    StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
    ● public int capacity() 返回容器的理论容量。
    ● public int length() 返回容器中的字符串长度。
代码演示:

package org.westos.demo;

public class StringBufferDemo {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        StringBuffer sb1 = new StringBuffer(100);
        StringBuffer sb2 = new StringBuffer("abcde");
        int capacity = sb.capacity();
        int capacity1 = sb1.capacity();
        int capacity2 = sb2.capacity();
        int length = sb.length();
        int length1 = sb1.length();
        int length2 = sb2.length();
        System.out.println(capacity);
        System.out.println(capacity1);
        System.out.println(capacity2);
        System.out.println(length);
        System.out.println(length1);
        System.out.println(length2);
    }
}

执行结果:
在这里插入图片描述
(3)StringBuffer类的添加功能

    ● public StringBuffer append(String str):把任意类型的数据添加到字符串缓冲区,并返回此字符串缓冲区对象。
    ● public StringBuffer insert(int offset , String str):在字符串缓冲区的指定位置插入一个字符串,并此返回字符串缓冲区。

代码演示:

package org.westos.demo;

public class StringBufferDemo1 {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("abc");
        System.out.println(sb);
        StringBuffer sb1 = sb.append("defg").append("hi");
        System.out.println(sb);
        StringBuffer sb2 = sb.insert(0, "ABC");
        System.out.println(sb);
    }
}

执行结果:
在这里插入图片描述
(4)StringBuffer类的删除功能

   ● public StringBuffer delete(int start, int end) 删除从指定索引start到索引end的字符(不包含end索引上的字符),返回自身对象。
   ● public StringBuffer deleteCharAt(int index) 删除指定索引上的字符,返回自身对象。

(5)StringBuffer类的替换和翻转功能

   ● public StringBuffer replace(int start,int end,String str):把从索引strat到end的字符用str字符串替换,返回自身对象。
   ● public StringBuffer reverse():把字符串翻转。

(6)StringBuffer类的截取功能

   ● public String substring(int start):从指定索引位置截取到字符串尾部。
   ● public String substring(int start,int end):从指定索引start截取到end(不包含end)。

(7)StringBuffer类和String类的转换

package org.westos.demo;

public class StringBufferDemo2 {
    public static void main(String[] args) {
        String str = new String("abc");
        //String-->StringBuffer
        //方式1:构造方法
        StringBuffer stringBuffer = new StringBuffer(str);
        //方式2:StringBuffer的append()方法
        StringBuffer stringBuffer1 = new StringBuffer();
        StringBuffer stringBuffer2 = stringBuffer1.append(str);
        //StringBuffer-->String
        //方式1:构造方法
        StringBuffer stringBuffer3 = new StringBuffer("hello");
        String s = new String(stringBuffer3);
        //方式2:tostring()
        String s1 = stringBuffer3.toString();
        //方式3:substring()
        String s3 = stringBuffer3.substring(0);
    }
}

(8)小案例

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

package org.westos.demo;

public class Test {
    public static void main(String[] args) {
        int[] arr = {1,2,3};
        StringBuffer stringBuffer = new StringBuffer("[");
        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);
    }
}

执行结果:
在这里插入图片描述
2. StringBuilder类

   StringBuilder类也是字符串缓冲区,那么它和StringBuffer的区别在哪里呢?查询API后我们知道它提供的方法和StringBuffer大致相似,但StringBuilder是线程不安全的,StringBuffer是线程安全的,在运行速度上StringBuffer没有StringBilder快。

总结:
   StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况。
   StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况。

3. Arrays类

   (1)Arrays类概述

    此类包含用来操作数组(比如排序和搜索)的各种方法。

   (2)Arrsys类中的方法

     ● public static String toString(int[] a):返回数组的字符串表示形式。
     ● public static void sort(int[] a):对数组进行排序。
     ● public static int binarySearch(int[] a,int key):使用二分查找法查找数组中的元素key。
     ● public static boolean equals(int[] a, int[] a2):比较两个数组是否相等。
     ● public static int[] copyOf(int[] original, int newLength):复制与原数组为一个长度为newLength的新数组。
     ●public static int[] copyOfRange(int[] original, int from, int to):复制原数组的元素从指定索引from处到to(不含to)到一个新数组中。

代码实现:

package org.westos.demo;

import java.util.Arrays;

public class ArraysDemo {
    public static void main(String[] args) {
        int[] arr = new int[]{1,2,6,2,3,4,9,7,8,-1,0};
        int[] arr1 = new int[]{1,2,6,2,3,4,9,7,8,-1,0,6};
        String string = Arrays.toString(arr);
        System.out.println(string);
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));
        int i = Arrays.binarySearch(arr, 9);
        System.out.println(i);
        boolean b = Arrays.equals(arr, arr1);
        System.out.println(b);
        int[] copy = Arrays.copyOf(arr, 4);
        System.out.println(Arrays.toString(copy));
        int[] copy1 = Arrays.copyOfRange(arr, 0, 5);
        System.out.println(Arrays.toString(copy1));
    }
}

执行结果:
在这里插入图片描述
4. 基本类型的包装类

   (1)基本类型的包装类概述

    为了对基本类型的数据进行更多的操作,Java对每一种基本数据类型提供了相对应的类类型。
    基本类型和包装类的对应:
     ● byte --------------- Byte
     ● short --------------Short
     ● int ------------------Integer
     ● long ---------------Long
     ● float --------------- Float
     ● double -----------Double
     ● char --------------Character
     ● boolean ----------Boolean

   (2)String类和int类型的转换

public class PackingClass {
    public static void main(String[] args) {
        int num = 123;
        //int------->String
        //方式一:
        String str = num+"";
        //方式二:
        String s = String.valueOf(154888451);
        //方式三:
        Integer integer = new Integer(num);
        String string = integer.toString();
        System.out.println(string);
        //String---->int
        //方式一:
        int num1 = 100;
        Integer integer1 = new Integer(num1);
        int i = integer1.intValue();
        System.out.println(i);
        //方式二:
        int i1 = Integer.parseInt("154615");
        System.out.println(i1);
    }
}

   (3)自动装箱和自动拆箱

     ● 自动装箱:把基本类型转换为它对应的包装类类型。
     ● 自动拆箱:把包装类类型转换为它对应的基本类型。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值