构造方法
- 直接构造,所有用双引号包起来的都是字符串对象。
String str = "abcde";
- 通过new方法构造,支持各种参数
StringBuilder类
StringBuilder类是一个字符串容器,创建之后是可变的。可以用于字符串修改,提升字符串的操作效率。
字符串需要反复修改时使用StringBuilder类能提升速度,其底层是一个字符串数组,初始长度为16。
构造方法及主要方法
// StringBuilder sb = new StringBuilder();
StringBuilder sb = new StringBuilder("abc");
sb.append("cd").append("ef");
System.out.println(sb); // abccdef
StringJoiner类
StringJoiner类是一个字符串拼接类,类似Python中字符串的join方法。
构造方法及主要方法
import java.util.StringJoiner;
StringJoiner sj = new StringJoiner(",");
sj.add("cd").add("ef");
System.out.println(sj); // cd,ef
StringJoiner sj1 = new StringJoiner(",", "[", "]");
sj1.add("a").add("c").add("d");
System.out.println(sj1); // [a,c,d]
注意点
- String对象是不可改变对象,以下代码并不是改变了str,而是重新生成了一个字符串对象,然后赋值给了str。
String str = "abc"; str = "cde";
- 字符串是引用型变量,所以字符串之间的对比要使用String.equals()方法对比,该方法对比的是字符串的真值。==只是对比变量所存储的内存地址是否一致。
String strA = "abc"; String strB = "abc"; System.out.println((strA.equals(strB))); // true String strC = new String("abc"); String strD = new String("abc"); System.out.println((strC == strD)); // false System.out.println((strC.equals(strD))); // true
- 直接对变量进行赋值的方式,字符串是存储在串池的,是可以复用的。而以new的方式构造的字符串对象是存储在堆内存的,每次new都会在堆内存生成一个新的对象。所以直接赋值的方式更加节省内存。
String strA = "abc"; String strB = "abc"; System.out.println(strA == strB); // true String strC = new String("abc"); String strD = new String("abc"); System.out.println((strC == strD)); // false System.out.println((strC.equals(strD))); // true