String类与StringBuilder处理字符串的原理

文章详细介绍了Java中的StringBuilder类,包括其作为可变字符串的优势、与String类的区别、构造方法、常用方法如append、reverse和length,以及如何进行字符串转换和拼接。通过实例展示了StringBuilder在字符串拼接中的高效性能,并提供了一个判断对称字符串的案例。
摘要由CSDN通过智能技术生成


前言

先说一下StringBuilder的好处吧!
对字符串进行拼接:

/**
 * 字符串拼接
 */
private static void method1() {
    long start = System.currentTimeMillis();//获取1970年1月1日 0时0分0秒 到当前时间所经历的毫秒值
    String s = "";
    for (int i = 0; i < 50000; i++) {
        s += i;
    }
    long end = System.currentTimeMillis();
    System.out.println(end - start);//1315
}

用StringBuilder进行字符串拼接,所消耗的时间大大缩短。

public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        long start = System.currentTimeMillis();
        for (int i = 0; i < 50000; i++) {
            sb.append(i);
        }
        System.out.println(start);
        long end = System.currentTimeMillis();
        System.out.println(end - start);//11
    }

1. StringBuilder类

1.1 StringBuilder类概述

概述:StringBuilder是一个可变的字符串类,我们可以把它看成一个容器,这里的可变指的是StringBuilder对象中的内容是可变的。

1.2 StringBuilder类和String类的区别

  • String类: 内容是不可变的
  • StringBuilder类: 内容是可变的

1.3 StringBuilder类的构造方法

  • 常用构造方法
方法名说明
public StringBuilder()创建一个空白可变字符串对象,不含有任何内容
public StringBuilder(String str)根据字符串内容,来创建可变字符串对象
  • 示例代码
    当你打印String和StringBuilder对象时,只会出现字符串内容,而不会出现字符串地址。
public static void main(String[] args) {
    StringBuilder sb1 = new StringBuilder();
    System.out.println(sb1);

    StringBuilder sb2 = new StringBuilder("Java");
    System.out.println(sb2);
}

1.4 StringBuilder常用的成员方法

  • 方法介绍
方法名说明
public StringBuilder append(任意类型)添加数据,并返回对象本身
public StringBuilder reverse()返回相反的字符串序列
public int length()返回长度(字符出现的个数)
public String toString()通过toString()就可以实现把StringBuilder转换为String
  • 代码示例
public static void main(String[] args) {
    StringBuilder sb = new StringBuilder();
    // 什么类型的数据都可以添加
    sb.append(521).append("Java").append(true);//521Javatrue
    System.out.println(sb);

    // 长度可变的字符串
    StringBuilder sb1 = new StringBuilder();
    sb1.append("小白"); //小白
    System.out.println(sb1);
    sb1.append("小黑");
    System.out.println(sb1); //小白小黑
    sb1.append("小红");
    System.out.println(sb1); //小白小黑小红

    // 返回对象本身
    StringBuilder sb2 = new StringBuilder();
    StringBuilder zt = sb2.append("昨天");
    StringBuilder jt = sb2.append("今天");
    StringBuilder mt = sb2.append("明天");
    // 比较一下内存地址,表示指的同一个对象
    // sb2、zt、jt、mt调用append都会添加到sb2 中
    mt.append("现在");
    System.out.println(sb2 == zt );//true
    System.out.println(zt == jt );//true
    System.out.println(jt == mt );//true
    System.out.println(zt);//昨天今天明天
    System.out.println(jt);//昨天今天明天
    System.out.println(mt);//昨天今天明天

    // 通过添加数据时,返回值为对象本身,就可以对添加代码进行优化
    StringBuilder sb3 = new StringBuilder();
    // 链式编程,如果一个方法返回的是对象类型,那么对象就可以继续向下调用方法
    StringBuilder append = sb3.append("1").append(2).append(3);
    System.out.println(append);//123


    //反转
    StringBuilder sb4 = new StringBuilder();
    StringBuilder append1 = sb4.append(1).append(2).append(3);
    System.out.println("反转之前:" +append1);//反转之前:123
    System.out.println("反转之后:"+append1.reverse());// 反转之后:321

    //长度
    System.out.println("长度:" + sb4.length());

    //通过toString() 就可以实现把StringBuilder转换为String
    String s = sb4.toString();
    System.out.println(s);//321
}
  • 原理图解
    普通字符串拼接
    普通字符串拼接原理
    使用StringBuilder进行拼接
    StringBuilder拼接原理
  • 练习: 键盘接收一个字符串,程序判断该字符串是否是对称字符串,并在控制台打印是或不是。
public static void main(String[] args) {
    //键盘录入用StringBuilder来实现
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入对称字符串:");
    String s = scanner.nextLine();
    //将字符串封装为StringBuilder对象
    StringBuilder sb = new StringBuilder(s);
    sb.reverse();
    //s : String类型
    //sb : StringBuilder
    // 类型不一样没有可比性,不要忘记用toString()转换一下
    if (s.equals(sb.toString())) {
        System.out.println("是对称字符串");
    } else {
        System.out.println("不是对称字符串");
    }
}

1.5 StringBuilder和String相互转换

  • StringBuilder转换为String
    public String toString():通过 toString() 就可以实现把 StringBuilder 转换为 String
  • String转换为StringBuilder
    public StringBuilder(String s):通过构造方法就可以实现把 String 转换为 StringBuilder

1.6 拼接字符串案例

public static void main(String[] args) {
    int[] arr = {11,22,33};
    String s = arrayToString(arr);
    System.out.println(s);
}
public static String arrayToString(int[] arr) {
    StringBuilder sb = new StringBuilder("[");
    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();
}

会有人给我点赞嘛!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值