Srtingbuilder和StringBuffer的用法

56 阅读1分钟

StringBuffer和StringBuilder都是可变的字符序列

  • StringBuffer线程安全,做线程同步检查,效率较低
  • StringBuilder线程不安全,不做线程同步检查,效率较高,建议采用该类

常用方法列表

  • 重载的public StringBuilderappend()方法

  • 可以为该StringBuilder对象添加字符序列,仍然返回自身对象

  • 方法 public StringBuilder delete(删除)(int start,int end)//从start位置删除到end

  • 可以删除从start开始到end-1为止的一段字符序列,仍然返回自身对象

  • 方法punlic StringBuilder deleteCharAt(int index)//删除指定所有位置的字符

  • 移除此序列指定位置上的char,仍然返回自身对象。

  • 重载的 public StringBuilder insert()方法,可以为该String Builder 对象在指定位置插入字符序列,仍然返回自身对象

  • 方法public stringbuilder reverse()//reverse逆转

  • 用于将字符序列逆序,仍然返回自身对象

  • 方法 public string toString()返回此序列中数据的字符串表示形式

  • 和 String 类含义类似的方法

    public int indexOf(String str)
    public int indexOf(String str,int fromlndex)
    public String substring(int start)
    public String substring(int start,int end)
    public int length()
    cahr charAt(int index)
    

例:

package com.it.baizhan;

public class TestBufferAndBuilder {
    public static void main(String[] args) {
        /**StringBuilder*/
        StringBuilder sb = new StringBuilder();
        for (int i = 0;i < 7;i++){
            sb.append((char) ('a'+i));//追加单个字符
        }
        System.out.println(sb.toString());//转换成String
        sb.append(",i can sing my abc!"+1+2+3);//追加字符串
        System.out.println(sb.toString());
       sb.append("1").append("2").append("3");
       System.out.println(sb.toString());
        /**StringBuffer,下面的方法同样使用StringBuilder*/
        StringBuilder sb2 = new StringBuilder("苏州高博");
        sb2.insert(0,"爱").insert(0,"我");//插入字符串
        System.out.println(sb2);
        sb2.delete(0,2);//删除字符串
        System.out.println(sb2);
        sb2.deleteCharAt(0).deleteCharAt(0);//删除某个字符
        System.out.println(sb2.charAt(0));//获取某个字符
        System.out.println(sb2.reverse());//字符串逆序

    }
}

**自定义包装类完善 **

自定义包装类练习:

例:

package com.it.baizhan;

import java.util.Arrays;

//自定义一个简单的包装类,(仅限于练习)
public class Test02 {
    private final int value;

    private static Test02[] cache;//缓存【-128~127】之间的数字
    private static final int LOW = -128;
    private static final int HIGH = 127;

    static {
        cache = new Test02[HIGH - LOW + 1];//256
        for (int i = LOW; i <= HIGH; i++) {
            cache[i - LOW] = new Test02(i);
        }
        System.out.println(Arrays.toString(cache));
    }

    private Test02(int value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return value + "";
    }

    public static Test02 valueOf(int value) {
        if (value >= LOW && value <= HIGH) {
            return cache[value - LOW];
        }
        return new Test02(value);

    }
    public int intValue(){
        return value;
    }

    public static void main(String[] args) {
        Test02 a = new Test02(10);
        Test02 b = Test02.valueOf(100);
        Test02 b2 = Test02.valueOf(100);
        Test02 b3 = Test02.valueOf(1000);
        Test02 b4 = Test02.valueOf(1000);

        System.out.println(b == b2);
        System.out.println(b3 == b4);

        int c = b.intValue();

    }

}