Java之StringBuffer的使用

StringBuffer

StringBuffer(字符串缓冲区)

JDK 1.5 的 StringBuilder(线程不安全 省资源)

StringBuffer 的特点 :

1. StringBuffer 相当于 是一个 可变的序列(操作的是原字符串)
2. 是线程安全 (耗费资源)

    /**
     * 无参创建StringBuffer
     */
    public static void fun1() {
        // 创建一个StringBuffer(拼接字符串) 
        StringBuffer sb = new StringBuffer();
        // 获取容量(理论值)
        System.out.println(sb.capacity());
        // 获取长度
        System.out.println(sb.length());
        // 转化为字符串
        System.out.println(sb.toString());
        // 拼接字符串(操作的是原对象)
        StringBuffer sb1 = sb.append("wanglong").append(">??");
        // 如果直接打印对象 系统会帮你调用toString方法
        System.out.println(sb);
        System.out.println(sb1);
    }
    public static void fun2() {
        // 直接使用字符串创建StringBuffer
        StringBuffer sb = new StringBuffer("wanglong");
        // 插入一个字符 把字符插入索引的位置上
        // 插入boolean类型 就相当于 把 true 和 false 当字符串 插入
        sb.insert(3, false);
        System.out.println(sb);
        // 给索引位置进行 字符修改
        sb.setCharAt(3, 'k');
        System.out.println(sb);
        // 注意 : 插入字符 和 字符修改 的时候 不能越界
        // 传入角标返回字符
        char c = sb.charAt(7);
        System.out.println(c);
        // Buffer转成字符数组
        // 先变字符串 然后 再变 字符数组
        sb.toString().toCharArray();
    }
    public static void fun3() {
        StringBuffer sb = new StringBuffer();
        sb.append("wanglong");
        // 删除 (删头不删尾)
        // sb.delete(0, sb.length()-1);
        // 注意 开始坐标不能越界 结束坐标越界 系统当清空处理
        System.out.println(sb);
        // 删除字符
        // sb.deleteCharAt(0);
        System.out.println(sb);
        // 反转
        sb.reverse();
        System.out.println(sb);
    }
public static void fun4() {
        // 从键盘输入一个字符串 反转
        System.out.println("请输入一个字符串 : ");
        Scanner scanner = new Scanner(System.in);
        String string = scanner.nextLine();
        // 转成StringBuffer
        StringBuffer stringBuffer = new StringBuffer(string);
        // 反转
        stringBuffer.reverse();
        // 转化成字符串输出
        System.out.println(stringBuffer.toString());
    }

        /*
         * 需求
         * 把int[] array = new int[]{1,2,3,4};
         * 输出 [1, 2, 3, 4];
         * 要求:使用两种方法(String 和 StringBuffer)
         */
        int[] array = new int[]{1,2,3,4};
public static void fun5(int[] array) {
        int[] array = new int[]{1,2,3,4};
        String string = "[";
        // 遍历数组
        for (int i = 0; i < array.length; i++) {

            if (i < array.length -1) {
                // 拼接字符串
                string = string + array[i] + "," ;
            }else {
                string = string + array[i] + "]";
            }
        }
        System.out.println(string);
    }
    public static void fun6() {
        int[] array = new int[]{1,2,3,4};
         // fun5(array);
        // 使用stringbuffer实现
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append("[");
        for (int i = 0; i < array.length; i++) {
            if (i != array.length -1) {
                stringBuffer.append(array[i]).append(",");
            }else{
                stringBuffer.append(array[i]).append("]");
            }
        }
        System.out.println(stringBuffer);
    }

    public static void fun7() {
        // 替换
        StringBuffer sb = new StringBuffer();
        sb.append("wanglong");
        // 开始角标不能越界
        // sb.replace(0 , 9, "a");
        System.out.println(sb);

        // 字符串截取 返回了一个新的字符串给你
        // String substring = sb.substring(4);
        // System.out.println(substring);

        String substring = sb.substring(0, 4);
        System.out.println(substring);
    }

    public static void fun8(String string) {
        string = "wangsong";
    }
    public static void fun9(StringBuffer sBuffer) {
        sBuffer.append("znb");
    }
    // 地址的传递
    public static void fun10(StringBuilder stringBuilder) {
        stringBuilder.append("haha");
    }
public static void main(String[] args) {
        // 测试字符串参数方法
        // 字符串作为参数时 跟基本数据类型作为参数一样
        // 相当于是 值的传递
        String string = "wanglong";
        fun8(string);
        System.out.println(string);
        // 测试StringBuffer做参数
        // StringBuffer作为参数的时候 跟引用数据类型一样
        // 相当于是 地址的传递
        StringBuffer sBuffer = new StringBuffer("wanglong");
        fun9(sBuffer);
        System.out.println(sBuffer);
        // 地址的传递
        StringBuilder stringBuilder = new StringBuilder("wanglong");
        fun10(stringBuilder);
        System.out.println(stringBuilder);
}

总结:

StringBuffer 和 StringBuilder 区别
StringBuffer 线程安全 效率低(耗费系统资源)
StringBuilder 线程不安全 效率高(相对于StringBuffer耗费资源少)
StringBuffer 和 StringBuilder使用方法一样
String 和 StringBuffer 的区别
String 是不可变的 线程不安全的
StringBuffer 是可变的 操作的是对象本身

基本数据类型 的 包装类

 byte               Byte
 short              Short
 int                Integer
 long               Long
 float              Float
 double             Double
 boolean            Boolean
 char               Character

为什么要把基本数据类型 封装成一个类?

在类中可以声明方法 可以使用对象调用方法

Integer 类

    public static void fun1() {
        // 创建一个Integer对象
        Integer integer1 = new Integer(10);
        System.out.println(integer1);
        // 把字符串转化成 Integer类型
        // 注意 : 是数字格式字符串 才能转换
        Integer integer2 = new Integer("100");
        System.out.println(integer2);

        int a = 60;
        // 转二进制 转8进制 转16进制
        System.out.println(Integer.toBinaryString(a));
        System.out.println(Integer.toOctalString(a));
        System.out.println(Integer.toHexString(a));

        // int 和 Integer 之间的转换 静态方法
        Integer num1 = Integer.valueOf(10);
        // 把Integer类型转换成int类型
        int num2 = num1.intValue();

        // string 和 integer 之间的转换
        Integer num3 = Integer.valueOf("100");
        String string3 = num3.toString();

        // 把字符串 转换成int
        int num4 = Integer.parseInt("100");
    }
public static void fun2() {
        /*
         * JDK 1.5 自动装箱和自动拆箱
         */
        // 这样声明相当于 Integer.valueOf(10)
        // 系统会帮自动装箱 调用这个方法
        // 初值不要给null 避免计算中发生错误
        Integer num1 = 10;
        // 相当于系统帮你把 num1 进行 自动拆箱 转换回了 int类型
        int rel = num1 + 5; // 相当于调用 num1.intValue
        System.out.println(rel);
    }
    public static void main(String[] args) {
        //  fun1();
        //  fun2();

        // 传入的值 如果在-128到127之间
        // 从数组中取出一个对象 返回
        // 超出[-128,127]这个区间
        // 返回 新创建的对象

        Integer num1 = 127;
        Integer num2 = 127;
        // == 比较地址
        System.out.println(num1 == num2);
        // Integer中的equals方法 比较int值
        System.out.println(num1.equals(num2));
    }

权限修饰符

修饰符类型本类同包类同包子类不同包类不同包子类
public✔️✔️✔️✔️✔️
private✔️
protected✔️✔️✔️✔️
default✔️✔️✔️
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值