String的赋值
String str = "Hello World";
// 直接赋值会把值放到StringTable(串池)中开辟一个地址,并且会复用
String s1 = new String("Hello World");
// 如果要是new的是在堆内存里面开辟空间储存值
String s2 = new String("");
byte [] b1 = {97,98,99,100};
String b2 = new String(b1);
char [] c1 = {'a','b','c'};
String c2 = new String(c1);
字符串拼接的底层原理![](https://img-blog.csdnimg.cn/direct/ea8634eec18a44959b8d37d9a59f33dd.png)
StringBuilder和StringJoiner的方法
StringBuilder可以优化性能,可以拼接字符串,并进行反转
StringJoiner于StringBuilder不同的是他可以每个字符串之间添加字符,以及开始和结束添加字符
String s = "Hello World";
// s.equals() 区分大小写
// s.equalsIgnoreCase() 不区分大小写
// charAt(i)显示字符串每个索引下的字符
// s.substring(i,y) 从i到y取不到y
// s.substring(i) 从i到结尾
System.out.println( s.substring(0,4));
System.out.println(s.substring(4));
// s.repeat() 旧值换成新值
System.out.println(s.replace("1","2"));
// StringBuilder的构造方法,可以空参也可以传参
// sb.append() 为StringBuilder添加字符,返回对象本身,可以链式编程
// sb.reverse() 字符反转
// sb.toString() 把StringBuilder变成String
// s.length() StringBuilder的长度
StringBuilder sb = new StringBuilder("aabb");
// sb.append(s.substring(0,2)).reverse().toString();这个就是链式编程
// StringJoiner 用于拼接字符串 不能为空参
// 参数为(每个项之间间隔符号,开始符号,结束符号)
StringJoiner sj = new StringJoiner(",");
// StringJoiner.add()添加数据,返回对象本身
// StringJoiner.toString()变成字符串
// toString.length()长度
// StringBuilder的扩展
// sb.capacity() Stringbuilder的容量
// s.length() StringBuilder的长度
}