StringBulider&String
StringBulider 是一个可变字符串类,我们可以把它看成是一个容器,这里的可变指的是StringBulider对象中的内容是可变的。
String :内容是不可变的
StringBulider: 内容是可变的
String 实现字符串反转:
import java.util.Scanner;
public class StringDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String s = sc.nextLine();
inversion(s);
}
public static void inversion(String st){
String str = "";
for (int i = st.length()-1; i >= 0; i--){
str += st.charAt(i);
}
System.out.println(str);
}
}
实现效果:
请输入一个字符串:nihao
oahin
StringBulider 实现字符串添加和反转:
public class StringBuilderDemo {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
StringBuilder sb1 = sb.append("hello");
System.out.println("sb:" + sb);
System.out.println("sb1:" + sb1);
System.out.println(sb == sb1);
//链式添加编程
sb.append("yuaner").append("nihao").append(00);
System.out.println("链式添加:" + sb);
//反转序列
sb.reverse();
System.out.println("反转序列" + sb);
}
}
显示的结果:
sb:hello
sb1:hello
true
链式添加:helloyuanernihao0
反转序列0oahinrenauyolleh
综上可以看出使用StringBuilder时改变的是常量池中同一个地址中的字符串;而使用String是每次都会在堆内存中申请一个新的地址空间用于存储字符串,因此都有自己专属的一个地址。
StringBulider 和 String相互转换
为什么相互转换: 因为前者由append和reverse两个方便使用的方法,我们可以把string转换到stringbuilder中使用这两个方法之后再转换回string中方便使用,就不需要使用string时再构造方法了。
SB转S: toString()
S转SB: StringBuilder(String s)
public class StringBuilderDemo1 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("hello");
//toString()方法
String s = sb.toString();
System.out.println("sb->s:" + s);
String str = "world";
//S转为SB
StringBuilder stb = new StringBuilder(str);
System.out.println("s->sb:" + stb);
}
}
显示结果:
sb->s:hello
s->sb:world