Java 字符串 08 StringBuilder

一个是字符串逐个拼接,会很慢,另一个使用方法,速度很快

使用StringBuilder不会创建那么多没用的字符串,效率会变高。

对于public String toString()的解释:

StringBuilder 是一个可变的字符序列,它可以进行字符串的添加、删除、修改等操作,而 String 是一个不可变的字符序列,一旦创建就不能修改。

当我们使用 StringBuilder 进行操作时,每次操作都是在原有的字符串上进行修改,而不会创建新的字符串对象。这就导致了 StringBuilder 得到的结果和 String 类型不一样。

代码练习:

代码运行结果:

这个结果是空白的,因为StringBuilder的默认初始值是空字符串。当你使用System.out.println()方法打印一个空的StringBuilder对象时,它会输出一个空白行。

当你打印一个对象时,默认情况下会调用对象的toString()方法。在StringBuilder类中,toString()方法被重写了,使其返回当前对象所包含的字符串内容。因此,当你打印StringBuilder对象时,会打印出对象的内容而不是地址。

如果你想打印出对象的地址,可以使用System.identityHashCode()方法将对象转换为哈希码进行打印。例如:

java 复制代码
public class practice{ 
    public static void main(String[ ] args){
         StringBuilder sb = new StringBuilder();                 
         System.out.println(System.identityHashCode(sb)); 
    } 
}

这样将会打印出StringBuilder对象的地址。

代码:

代码结果:

添加元素代码:

代码结果:

反转元素:在容器内部直接发生了反转,和字符串不一样,字符串本身不呢个改变,需要有返回值去承接,而这个是直接改变了容器内的东西

代码:

代码结果:

打印长度代码:

代码结果:

public String toString():

这样打印出来的是StringBuilder类型的,不是字符串类型的:

变回字符串,就可以用字符串的方法了:

链式编程:

在Java中,getString()是指从用户输入中获取一个字符串的方法。这个方法通常用于从控制台读取用户输入,并将其保存为一个字符串。它可以用于获取用户的姓名、地址、电子邮件等信息。

输入abc,从b截取到末尾,就是bc,没有A, 则不替换,再获取长度,等于2;

可以通过链式编程,简化StringBuilder代码:

append方法返回的都是StringBuillder类型,所以可以写成这样:

自己写的代码:

java 复制代码
import java.util.Scanner;
public class  practice{
    public static void main(String[ ] args){
        Scanner sc = new Scanner(System.in);

        System.out.println("输入一个字符串:");
        String str = sc.next();
        StringBuilder sb = new StringBuilder(str);
        System.out.println(sb.reverse());
        String str1 = sb.toString();
        if(str.equals(str1)){
            System.out.println("是对城的");
        }else{
            System.out.println("不是对城的");
        }
    }
}

代码运行结果:

视频代码:

使用StringBuilder的场景:

1、字符串的拼接

2、字符串的反转

自己写代码:

java 复制代码
import java.util.Scanner;
public class  practice{
    public static void main(String[ ] args){
        int [] arr = {1,2,3};
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for(int i=0;i< arr.length;i++){
            if(i!=arr.length-1){
                sb.append(arr[i]+",");
            }else{
                sb.append(arr[i]);
            }
        }
        sb.append("]");
        System.out.println(sb);
    }
}

代码运行结果:

视频代码:

相关推荐
水w6 分钟前
【Android Studio】解决报错问题Algorithm HmacPBESHA256 not available
android·开发语言·android studio
冷琅辞37 分钟前
Elixir语言的云计算
开发语言·后端·golang
Mryan20051 小时前
解决GraalVM Native Maven Plugin错误:JAVA_HOME未指向GraalVM Distribution
java·开发语言·spring boot·maven
Naomi5211 小时前
自定义汇编语言(Custom Assembly Language) 和 Unix & Git
服务器·开发语言·git·unix
烂蜻蜓1 小时前
C 语言命令行参数:让程序交互更灵活
c语言·开发语言·交互
VX_CXsjNo11 小时前
免费送源码:Java+SSM+Android Studio 基于Android Studio游戏搜索app的设计与实现 计算机毕业设计原创定制
java·spring boot·spring·游戏·eclipse·android studio·android-studio
zm-v-159304339861 小时前
解锁 DeepSeek 与 Matlab:攻克科研难题的技术利刃
开发语言·matlab·信息可视化
ylfhpy2 小时前
Java面试黄金宝典33
java·开发语言·数据结构·面试·职场和发展·排序算法
照书抄代码2 小时前
C++11可变参数模板单例模式
开发语言·c++·单例模式·c++11
No0d1es2 小时前
CCF GESP C++编程 四级认证真题 2025年3月
开发语言·c++·青少年编程·gesp·ccf·四级·202503