JAVA 字符串 10 StringBuilder 的基本操作

1 字符串使用 + 直接拼接  速度慢

package com.bjpowernode;

public class StringBuuilder01 {
    public static void main(String[] args) {
        String s = "";
        for (int i = 0; i < 1000000; i++) {
            s += "abc";
        }
        System.out.println(s);
    }
}

字符串 + 拼接 100万次,会非常慢

使用 StringBuilder 就会非常快

package com.bjpowernode;

public class StringBuilder02 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 1000000; i++) {
            sb.append("abc");
        }
        System.out.println(sb);
    }
}

2 StringBuilder 概述

StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的

作用:提高字符串的操作效率

2.1 StringBuilder 构造方法

  • public StringBuilder()                      创建一个空白可变字符串对象,不含有任何内容
  • public StringBuilder(String str)        根据字符串的内容,来创建可变字符串对象

2.2 StringBuilder 成员方法

  • public StringBuilder append(任意类型)     添加数据,并返回对象本身
  • public StringBuilder reverse()                   反转容器中的内容
  • public int length()                                      返回长度(字符出现的个数)
  •  public String toString()                             可以实现把 StringBuilder 转换为 String
package com.bjpowernode;

public class StringBuuilder01 {
    public static void main(String[] args) {
        //创建对象
        StringBuilder sb = new StringBuilder();

        //打印
        //普及:
        //因为StringBuilder是Java已经写好的类
        //java在底层对他做了一些特殊处理。
        //打印对象不是地址值而是属性值。
//        System.out.println(sb);   //没有打印地址值,显示台什么都没有输出

        //添加元素
        sb.append("abc");
        sb.append(1);
        sb.append(2.3);
        sb.append(true);
        System.out.println(sb);   //abc12.3true

        sb.reverse();
        System.out.println(sb);  //eurt3.21cba

        System.out.println(sb.length());   //11

        String str = sb.toString();   //变回字符串
        System.out.println(str);   //eurt3.21cba
    }
}

2.2.1 通过链式编程修改上述代码

//添加元素
//        sb.append("abc");
//        sb.append(1);
//        sb.append(2.3);
//        sb.append(true);
        //可以改成链式编程
        sb.append("abc").append(1).append(2.3).append(true);

3 链式编程

链式编程:当我们在调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法

package com.bjpowernode;

import java.util.Scanner;

public class StringBuilder02 {
    public static void main(String[] args) {
        //链式编程:
        //当我们在调用一个方法的时候,不需要用变量接收他的结果,可以继续调用其他方法
        int len = getString().substring(1).replace("A", "Q").length();
        System.out.println(len);
    }

    public static String getString(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str = sc.next();
        return str;
    }
}

运行结果:

 

4 使用 StringBuilder 的场景

  • 字符串的拼接
  • 字符串的反转

5 StringBuilder 练习

5.1 对称字符串

需求:键盘接受一个字符串,程序判断出该字符串是否是对称字符串,并在控制台打印是或不是
对称即:正、反 一样

package com.bjpowernode;

import java.util.Scanner;

public class StringBuilder03 {
    public static void main(String[] args) {
        //键盘录入一个字符串
        System.out.println("请输入一个字符串");
        Scanner sc = new Scanner(System.in);
        String str = sc.next();

        //反转键盘录入的字符串
//        StringBuilder sb = new StringBuilder();   //利用StringBuuilder 的方法反转
        String reserveStr = new StringBuilder().append(str).reverse().toString();

        //比较两个字符串
        if(str.equals(reserveStr)){
            System.out.println("是一个对称字符串");
        }else{
            System.out.println("不是一个对称字符串");
        }
    }
}

运行结果:

5.2  拼接字符串

需求:定义一个方法,把int数组中的数据按照指定的格式拼接成一个字符串返回。
调用该方法,并在控制台输出结果。
例如:数组为int[] arr ={1,2,3};
执行方法后的输出结果为:[1,2,3]

package com.bjpowernode;

public class StringBuilder04 {
    public static void main(String[] args) {
        //定义数组
        int[] arr = {1, 2, 3};

        //调用方法把数组变成字符串
        System.out.println(arrToString(arr));
    }
    public static String arrToString(int[] arr){
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if(i != arr.length -1) {
                sb.append(arr[i]).append(",");
            } else {
                sb.append(arr[i]).append("]");
            }
        }
        return sb.toString();
    }
}

运行结果:

参考链接:字符串-10-StringBuilder的基本操作_哔哩哔哩_bilibili

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值