一个是字符串逐个拼接,会很慢,另一个使用方法,速度很快
使用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);
}
}
代码运行结果:
视频代码: